超好懂的PXE+Kickstart批量安裝RHEL5教程
本文記錄了用Kickstart實(shí)現(xiàn)無人值守安裝,搭建RHCE實(shí)驗(yàn)室環(huán)境的詳細(xì)步驟。文中使用的環(huán)境為RHEL 5,也同樣適用于CentOS。文章作者撫琴煮酒(Andrew Yu)是經(jīng)驗(yàn)豐富的Linux/Unix系統(tǒng)工程師,并曾經(jīng)擔(dān)任過一段時(shí)間的RHCE講師的工作。
原理和概念
什么是PXE
嚴(yán)格來說,PXE 并不是一種安裝方式,而是一種引導(dǎo)的方式。進(jìn)行 PXE 安裝的必要條件是要安裝的計(jì)算機(jī)中包含一個(gè) PXE 支持的網(wǎng)卡(NIC),即網(wǎng)卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment,直譯為預(yù)啟動執(zhí)行環(huán)境)協(xié)議使計(jì)算機(jī)可以通過網(wǎng)絡(luò)啟動。協(xié)議分為 client 和 server 端,PXE client 在網(wǎng)卡的 ROM 中,當(dāng)計(jì)算機(jī)引導(dǎo)時(shí),BIOS 把 PXE client 調(diào)入內(nèi)存執(zhí)行,由 PXE client 將放置在遠(yuǎn)端的文件通過網(wǎng)絡(luò)下載到本地運(yùn)行。運(yùn)行 PXE 協(xié)議需要設(shè)置 DHCP 服務(wù)器和 TFTP 服務(wù)器。DHCP 服務(wù)器用來給 PXE client(將要安裝系統(tǒng)的主機(jī))分配一個(gè) IP 地址,由于是給 PXE client 分配 IP 地址,所以在配置 DHCP 服務(wù)器時(shí)需要增加相應(yīng)的 PXE 設(shè)置。此外,在 PXE client 的 ROM 中,已經(jīng)存在了 TFTP Client。PXE Client 通過 TFTP 協(xié)議到 TFTP Server 上下載所需的文件。
什么是KickStart
KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預(yù)填寫的各種參數(shù),并生成一個(gè)名為ks.cfg的文件;在其后的安裝過程中(不只局限于生成KickStart安裝文件的機(jī)器)當(dāng)出現(xiàn)要求填寫參數(shù)的情況時(shí),安裝程序會首先去查找KickStart生成的文件,當(dāng)找到合適的參數(shù)時(shí),就采用找到的參數(shù),當(dāng)沒有找到合適的參數(shù)時(shí),才需要安裝者手工干預(yù)。這樣,如果KickStart文件涵蓋了安裝過程中出現(xiàn)的所有需要填寫的參數(shù)時(shí),安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然后去忙自己的事情。等安裝完畢,安裝程序會根據(jù)ks.cfg中設(shè)置的重啟選項(xiàng)來重啟系統(tǒng),并結(jié)束安裝。
PXE + KickStart安裝的條件
執(zhí)行 PXE + KickStart安裝需要的設(shè)備為:
- DHCP 服務(wù)器
- TFTP 服務(wù)器
- KickStart所生成的ks.cfg配置文件
- 一臺存放系統(tǒng)安裝文件的服務(wù)器,如 NFS、HTTP 或 FTP 服務(wù)器
- 帶有一個(gè) PXE 支持網(wǎng)卡的將安裝的主機(jī)
安裝的步驟
一、安裝httpd
yum -y install httpd*
二、掛載RHEL5的DVD光盤,并復(fù)制第一張光盤下的所有內(nèi)容(文件和文件夾)到/var/html/www下
mount /dev/cdrom /mnt cp –rf /mnt/* /var/html/www
三、安裝 tftp-server,并啟用tftp服務(wù),重啟xinetd進(jìn)程
rpm -ivh tftp-server-0.39-1.i386.rpm vi /etc/xinetd.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no #disable的直由yes變?yōu)閚o per_source = 11 cps = 100 2 flags = IPv4 } service xinetd restart
四、配置支持PXE啟動
注意我已經(jīng)把第一張光盤的內(nèi)容復(fù)制到/var/www/html目錄中了,所以所需要的文件我只需要從/var/ftp目錄中復(fù)制就行了,但在描述的時(shí)候,我還是表明了文件的真實(shí)的位置,比如在DVD光盤的哪個(gè)中,只是文件我是從/var/www/html目錄中復(fù)制而已,大家也可學(xué)我樣偷懶
1、進(jìn)入tftpboot文件夾,沒有就建一個(gè),有了就不用建了。
cd /tftpboot/
2、把pxelinux.0復(fù)制到/tftpboot/中
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
3、把Linux第一張安裝光盤上/image/pxeboot/initrd.img和vmlinux復(fù)制到/tftpboot/中
cp /var/ftp/image/pxeboot/initrd.img /tftpboot cp /var/ftp/image/pxeboot/vmlinux /tftpboot
4、 復(fù)制第一張安裝光盤上的isolinux/*.msg到/tftpboot/中
cp /var/ftp/isolinux/*.msg /tftpboot
5、 在tftpboot中新建一個(gè)pxelinux.cfg目錄
mkdir pxelinux.cfg
6、 把Linux第一張安裝光盤上isolinux目錄中的isolinux.cfg復(fù)制到pxelinux.cfg目錄中,并同時(shí)更改文件名稱為default
cd pxelinux.cfg cp /var/ftp/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
7、 在上一步中,我們暫時(shí)不要修改default文件。其實(shí)到達(dá)這一步驟的時(shí)候,我都就可以通過網(wǎng)絡(luò)引導(dǎo)了,通過網(wǎng)絡(luò)引導(dǎo)之后接下了就可以手動安裝了,但是這里面我們討論的是無人值守安裝,而所謂無人值守安裝就是在從引導(dǎo)到安裝都不需要手動指定,一氣呵成。我們接下來繼續(xù)講解。
六、安裝dhcp服務(wù),同時(shí)修改配置
1、 安裝
rpm -ivh dhcp-3.0.1-12_EL.i386.rpm
2、 復(fù)制配置模板文件到指定的目錄中,并重命名
cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf
3、 修改配置文件,添加一行:filename "/pxelinux.0",其他的修改自己完成就行了。這文件的位置一定要注意,不然會失敗,切記
[root@localhost isolinux]# vim /etc/dhcpd.conf ddns-update-style interim; ignore client-updates; next-server 192.168.1.14; #PXE服務(wù)器IP地址
filename "/pxelinux.0"; #注意此行的位置,寫在subnet下面的話會失敗
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option nis-domain "example.com";
option domain-name "example.com";
option domain-name-servers 192.168.1.254;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.1.128 192.168.1.254;
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
#host ns {
# next-server marvin.redhat.com;
# hardware ethernet 12:34:56:78:AB:CD;
# fixed-address 192.168.1.110;
#}
}
4、 啟動dhcp服務(wù)
service dhcp start
七、 安裝kickstart并進(jìn)行配置
首先安裝Kickstart:
rpm -ivh system-config-kickstart-2.5.16-2.noarch.rpm
在gnome環(huán)境下配置kickstart的指令如下:
system-config-kickstart
之后的配置步驟如下:
- 基本配置,按自己需求來就好
- 安裝方法,選擇httpd安裝,切記不要輸入任何的帳號,我們采用的匿名安裝
- 引導(dǎo)安裝程序選項(xiàng),不需要做更改
- 分區(qū)信息,創(chuàng)建三個(gè)分區(qū)
- 網(wǎng)絡(luò)配置,我使用的靜態(tài)分配地址(動態(tài)同樣如此)
- 顯示配置,按自己需求來就好
- 軟件包的選擇,我選擇了Kernel Developent和Development Tools安裝(但千萬不要選擇這兩個(gè)軟件包,不然的話在安裝的時(shí)候會報(bào)錯(cuò)的)
- 其他的都是默認(rèn)設(shè)置,沒有做修改
- 生成文件ks.cfg,保存到/var/www/html下
八、修改/tftpboot/pxelinux.cfg/default文件,指定讀取ks.cfg的方法(ks=http://192.168.1.40/ks.cfg)
vi /tftpboot/pxelinux.cfg/default
auth --useshadow --enablemd5
key --skip #這行一定要,跳過注冊號輸入,不然會失敗
bootloader --location=mbr
clearpart –all –initlabel
text
firewall --disabled
firstboot --disable
keyboard us
lang en_US
logging --level=info
url --url=http://192.168.1.14/
network --bootproto=dhcp --device=eth0 --onboot=on
reboot
rootpw --iscrypted $1$HEJKfwF9$r1l0JoPz74ToF9NbE3Qs1
selinux --disabled
timezone --isUtc Asia/Shanghai
intall
xconfig --defaultdesktop=GNOME -depth=8 --resolution=640x480
part swap --bytes-per-inode=4096 --fstype="swap" --size=512
part /boot --bytes-per-inode=4096 --fstype-"ext3" --size=200
part / --bytes-per-inode=4096 --fstype="ext3" --grow --size=1
%packages
@cluster-storage
@mysql
@development-libs
@editors
@text-internet
@x-software-development
@virtualization
@legacy-network-server
@dns-server
@gnome-desktop
@dialup
@core
@base
@ftp-server
@network-server
@clustering
@java-development
@base-x
@chinese-support
@web-server
@smb-server
@printing
@admin-tools
@development-tools
@graphical-internet
kmod-gnbd-xen
kmod-gfs-xen
perl-Convert-ASN1
perl-Crypt-SSLeay
mesa-libGLU-devel
tftp-server
kexec-tools
bridge-utils
device-mapper-multipath
ypserv
openldap-servers
vnc-server
dhcp
xorg-x11-server-Xnest
xort-x11-server-Xvfb
imake
gcc-objc
expect
最后,重新引導(dǎo)安裝就可以了。以上是我的配置步驟,如果沒有出入的話,是一定可以成功的!
【編輯推薦】