1、RedHat 无人值守自动部署系统前言我们都知道 RedHat 中的 Kickstart 可实现 RedHat 光盘启动后的自动安装,如果把 ks.cfg 及RPM 安装文件考到一台 HTTP 或 NFS 服务器上,就可以实现网络自动安装,但还是需要 RedHat 的启动盘来启动机器,加上 DHCP、TFTP 和 PXElinux 及支持 PXE 的网卡,就可以实现远程启动。也就是说,有了上面的条件,你只要给一台支持 PXE 的客户机上电,同时 C/S 主机间正常请求 IP 地址就可以安装好一台 RedHat 机器工作原理PXE 网卡启动-DHCP 服务器- 获得 IP 地址-从 TFTP 服
2、务器上下载pxelinux.0、vmlinuz 、initrd- 启动系统- 通过 PXElinux 去 HTTP 下载 ks.cfg 文件- 根据 ks.cfg 文件中配置的系统文件存放路径下载 RPM 包安装系统-安装结束详细说明陈述如下:1、 网卡得先和 DHCP Server 沟通,然后 DHCP Server 告诉 PXE Client 到哪里(TFTP Server 的位置)去下载 pxelinux.0 , pxelinux.0 是 Linux 的 boot loader , 就是开机程式2、 接着利用 TFTP 取得 pxelinux.0 文件及 Kickstart 自动安裝配置
3、文件所在位置,把pxelinux.0 載入内存,此時巳如同將 Linux kernel 内存中3、 接着 kernel 根据 DHCP Sserver 所告知的 Kickstart 位置,取得 Kicstart 的配置文件, 然 后根据 Kickstart 文件的内容来自动安装 Linux基础服务由于 Redhat 系统中的 Kickstart 技术涉及到知识面比较广,对初次接触 LINUX 系统人员需求很高,因此在搭建 Kickstart 服务前,得先掌握 DHCP、TFTP、DNS 、HTTP 基础服务,以便更好理解Kickstart 工作原理及掌握关键技术点详细操作步骤:1、 yum 服
4、务器在 Redhat 系统中基于 rpm 方式安装软件包时容易出现由于 rpm 安装包依赖关系的问题,而导致安装失败,通过 yum 服务器可自动解决 rpm 包的依赖关系,从而方便安装和管理 rpm 软件包。具体操作命令下面所述2、 TFTP 服务器3、 DHCP 服务器4、 DNS 服务器5、 HTTP 服务器服务前得需要熟悉上面基础服务的搭建过程具体实现的过程是这样的: 1、 配制一个 HTTP 服务器(当然也可以是 NFS、FTP) 及 kickstart 文件: 1) 如何配 HTTP 我就不说了,配好后,在 HTTP 的 DocumentRoot 目录下(一般为/var/www/ht
5、ml)建一个 rh9 目录,用于放 RedHat9 的安装文件。把 RedHat9 第一张安装盘的 RedHat 目录及下面的内容全部考到这个目录下,把第二、第三张盘的 RPMS 目录下的 rpm 包考到 rh9/RedHat/RPMS 目录下,完成安装文件的考贝。service httpd restart 开启 HTTP 服务。可以在浏览器内打入:http:/192.168.168.6/rh9看一下,是不是能看到 RedHat 目录。 2) 用 redhat-config-kickstart 命令做一个 ks.cfg 文件,注意在“安装方法”选项中 选 HTTP,在“HTTP服务器:”中打入
6、 HTTP 服务器的 IP 地址,在“HTTP 目录:”中打入 rh9,其它的我就不多说了。做好后把这个ks.cfg 文件考到 HTTP 服务器的 DocumentRoot/rh9 目录下。 3) 在一台机器上做一下测试(注意:因为是自动安装,这台机器的上的数据可能全部被格掉喔) 。用光盘启动机器,在 boot:提示符下打入:linux ks=http:/192.168.168.6/rh9/ks.cfg,看一下是不是能实现自动安装,如果能,OK 我们一半的工作已经做好了。 2、 配制 DHCP、TFTP、和 PXElinux。(当然这些服务可以和 HTTP 放在一台服器上) 1) 做一台 TF
7、TP 服务器太容易了,用 rpm qa | grep tftp 看一下 tftp 有没安装,没有的话安装一下。用 chkconfig tftp on 打开 xinetd 代理的 tftp 服务。 2) 做一台 DHCP 服务器,这是关键。下面是我的 dhcp.conf 文件: ddns-update-style interim; ignore client-updates; allow booting; #定义可以 PXE 8) 8) 启动 allow bootp; #定义支持 boottp subnet 192.168.168.0 netmask 255.255.255.0 option r
8、outers 192.168.168.230; #定义默认网关 option subnet-mask 255.255.255.0; option domain-name-servers 192.168.168.6; #定义 nameServer option time-offset -18000; # Eastern Standard Time range dynamic-bootp 192.168.168.12 192.168.168.254; default-lease-time 21600; max-lease-time 43200; # Group the PXE bootable h
9、osts together 定义可以 PEX 启动的主机的组 group # PXE-specific configuration directives. next-server 192.168.168.6; #TFTPServer 的 IP filename “/pxelinux.0“;#pxelinux loader 文件位置 # You need an entry like this for every host # unless youre using dynamic addresses #可 PEX 启动的主 #机的 IP 与 MAC 地址的邦定 host wy hardware e
10、thernet 00:00:E2:89:9B:DB; fixed-address 192.168.168.128; 红色的部分为在 DHCP 中支持 TFTP 及 PXElinux 的所要添加的部分。service dhcpd restart 开启 DHCP 服务。 3) 配制 PEXlinux。要远程启动机器,就必须要有 PXElinux 这个由 syslinux、isolinux 派生出来的,支持PXE 的 bootloader,它可以实现远程通过 PEX 启动一台机器。把/usr/lib/syslinux/pxelinux.0 考到/tftpboot 目录下,把 RedHat9 第一张安
11、装光盘上/image/pxeboot/initr.img 和 vmlinux 也考到/tftpboot目录下。在/tftpboot 建一个 pxelinux.cfg 目录,用于放 syslinux 的配制文件。Sysconfig 的配制文件有现成的可用,在 rh9 第一张安装光盘 isolinux/下有一个 isolinux.cfg 文件,把它考成 /tftpboot/default,把isolinux/*.msg 考到/tftpboot 下 (RedHat 的安装光盘的 Loader 就是个 isolinux,呵呵) 。对 default(也就是 isolinux.cfg)作一下修改,下面是
12、我的 default 文件: default local prompt 1 timeout 30 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg F7 snake.msg label local localboot 0 label linux kernel vmlinuz append initrd=initrd.img devfs=nomount ramdisk_size=9216 label text kernel vmlinuz append initrd=init
13、rd.img text devfs=nomount ramdisk_size=9216 label expert kernel vmlinuz append expert initrd=initrd.img devfs=nomount ramdisk_size=9216 label ks kernel vmlinuz append ks initrd=initrd.img devfs=nomount ramdisk_size=9216 label nofb kernel vmlinuz append initrd=initrd.img devfs=nomount nofb ramdisk_si
14、ze=9216 label lowres kernel vmlinuz append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216 label autoinstall kernel vmlinuz append ks=http:/192.168.168.6/rh9/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=9216 nofb 红色的部份是我加的,用于实现本地硬盘启动或支持 kickstart 的 PXE 网络自动安装。 cat 一下/tftpboot/boot.ms
15、g 文件: splash.lss - To Local boot 02Red Hat07 Linux , type: 0f;07. - To install or upgrade 02Red Hat07 Linux in graphical mode, press the 0f linux;07 key. - To install or upgrade 02Red Hat07 Linux in text mode, type: 0flinux text ;07. - To Auto Install 02Red Hat07 Linux , type: 0flinux autoinstall ;0
16、7. - Use the function keys listed below for more information. 02F1-Main F2-Options F3-General F4-Kernel F5-Rescue07 红色行是我加入的,用于显示 Local boot 和 autoinstall 选项。 3、 OK,到现在服务器端的配制已经基本完成了,让我们来试一下。用一台支持 PXE 的机器加电启动,按F12,一般机器启动时会有提示(请进入 BIOS 看一下,确认网卡或主板的 PXE 功能已经打开) ,选择 LAN 启动,看到了什么? “DHCPFFFFFFFFFFFFF”接着一
17、个和光盘启动的差不多的画面,是吧?按一下F2 试一下,F2 的选项是不是也出来了。打入 linux rescue 试试,是不是进入了 rescue 模式?HOHO,以后客户机启不来还要用光盘来重启进 rescue 模式吗?当然不用了,把安装光盘扔了吧,哈哈。 再重启机器,按 F12,选择 LAN,在 PXE 启动安装界面的 boot:提示符下打入 linux autoinstall 试试?HOHO,一个多小时后,一台新的 rh9 就这么安装好了。是不是很方便呢? 4、 参考文档:/usr/share/doc/syslinux-1.75/pxelinux.doc /usr/share/doc/s
18、yslinux-1.75/isolinux.doc /usr/share/doc/syslinux-1.75/syslinux.doc /usr/share/doc/dhcp-3.0pl1/README /usr/share/doc/httpd-2.0.40/README /usr/share/doc/pxe-0.1/README 5、最后,感谢我的 RHCE 老师 simon cheng,是他给了我提示和帮助,虽然有时我问他 10 个不同的问题,他回答我 9 个是同一个答案:See readme :) 6 ks.cfg 文件 install url -url http:/192.168.16
19、8.35/rh7 lang en_US langsupport -default en_US.iso885915 zh_CN.GB18030 zh_TW.Big5 en_US.iso885915 keyboard us mouse generic3ps/2 -device psaux skipx rootpw -iscrypted $1$驜 N/衢 KL$RKxVATP6iXeJ5T9mwFiUn/ firewall -disabled authconfig -enableshadow -enablemd5 timezone Asia/Shanghai bootloader -useLilo
20、# The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart -all part / -fstype ext3 -size=512 part /usr -fstype ext3 -size=4000 part swap -size=1024 pa
21、rt /var -fstype ext3 -size=512 part /home -fstype ext3 -size=1 -grow %packages Printing Support Classic X Window System X Window System GNOME Sound and Multimedia Support Network Support Dialup Support Messaging and Web Tools Everything kernel-smp %post /usr/sbin/useradd cxbaby chfn -f cxbaby cxbaby /usr/sbin/usermod -p $1$挽.z 礧翕$Xd2eupp3vJyRdvUyGxDvd/ cxbaby