1 概述
1.1 說明
2 PXE介紹
2.1 什麼是PXE
PXE(preboot execute environment)是由Intel公司開發的最新技術,工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,並由此支持來自網絡的操作系統的啓動過程,其啓動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啓動軟件包到本機內存中並執行,由這個啓動軟件包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。PXE可以引導多種操作系統,如:Windows95/98/2000,linux等。
2.2 PXE工作過程
l 第一步:PXE Client向DHCP發送請求
首先,將支持PXE的網絡接口卡(NIC)的客戶端的BIOS設置成爲網絡啓動,通過PXE BootROM(自啓動芯片)會以UDP(簡單用戶數據報協議)發送一個廣播請求,向網絡中的DHCP服務器索取IP地址等信息。
l 第二步:DHCP服務器提供信息
DHCP服務器收到客戶端的請求,驗證是否來至合法的PXE Client的請求,驗證通過它將給客戶端一個“提供”響應,這個“提供”響應中包含了爲客戶端分配的IP地址、pxelinux啓動程序(TFTP)位置,以及配置文件所在位置。
l 第三步:PXE客戶端請求下載啓動文件
客戶端收到服務器的“迴應”後,會迴應一個幀,以請求傳送啓動所需文件。這些啓動文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
當服務器收到客戶端的請求後,他們之間之後將有更多的信息在客戶端與服務器之間作應答, 用以決定啓動參數。BootROM 由 TFTP 通訊協議從Boot Server下載啓動安裝程序所必須的文件(pxelinux.0、pxelinux.cfg/default)。default文件下載完成後,會根據該文件中定義的引導順序,啓動Linux安裝程序的引導內核。
l 第五步:請求下載自動應答文件
客戶端通過pxelinux.cfg/default文件成功的引導Linux安裝內核後,安裝程序首先必須確定你通過什麼安裝介質來安裝linux,如果是通過網絡安裝(NFS, FTP, HTTP,VSFTP),則會在這個時候初始化網絡,並定位安裝源位置。或許你會說,剛纔PXE不是已經獲取過IP地址了嗎?爲什麼現在還需要一次?這是由於PXE獲取的是安裝用的內核以及安裝程序等,而安裝程序要獲取的是安裝系統所需的二進制包以及配置文件。由於它們需要的內容不同造成PXE模塊和安裝程序是相對獨立的,PXE的網絡配置並不能傳遞給安裝程序。從而進行兩次獲取IP地址過程。
接着會讀取該文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。
l 第六步:客戶端安裝操作系統
將ks.cfg文件下載回來後,通過該文件找到OS Server,並按照該文件的配置請求下載安裝過程需要的軟件包。
OS Server和客戶端建立連接後,將開始傳輸軟件包,客戶端將開始安裝操作系統。安裝完成後,將提示重新引導計算機。這個時候注意,在重新引導的過程中一定要將BIOS修改回從硬盤啓動,不然的話又會重複的自動安裝操作系統。
在上面介紹中PXE client是需要安裝Linux的計算機,TFTP Server、DHCP Server和VSFTP Server運行在另外一臺Linux Server上。Bootstrap文件、配置文件、Linux內核都放置在Linux Server上TFTP服務器的根目錄下。
PXE client在工作過程中,需要三個二進制文件:bootstrap、Linux 內核和Linux根文件系統。Bootstrap文件是可執行程序,它向用戶提供簡單的控制界面,並根據用戶的選擇,下載合適的Linux內核以及Linux根文件系統。
3 PXE安裝
3.1 安裝環境
服務端操作系統:RedHat Enterprise Linux AS 5 update 4
服務端ip地址是:192.168.0.251 子網掩碼是:255.255.255.0
注:本次安裝PXE,所有服務端程序均安裝在一臺服務器上,服務端需要關閉iptables和selinux服務。客戶端批量安裝的操作系統爲RedHat Enterprise Linux AS 5 update 4。
3.2 安裝所需軟件包及相關文件
l xinetd
l tftp-server
l dhcp
l vsftpd(可選httpd或nfs)
l syslinux
l ks.cfg配置文件
注:一般情況下軟件安裝包都可以在安裝光盤中找到,如果無法在安裝光盤中找到適合的安裝包,可以通過yum方式安裝。
3.3 安裝及配置
3.3.1 安裝所需軟件包
l 網絡安裝
yum install vsftpd tftp-server dhcpd xinetd syslinux
l 本地安裝
掛載系統光盤
# mount /dev/cdrom /mnt
進入軟件包存放目錄安裝
# rpm -ivh vsftpd tftp-server dhcpd xinetd syslinux
3.3.2 配置IP地址
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=static TYPE=Ethernet ONBOOT=yes IPADDR=192.168.0.251 NETMASK=255.255.255.0 |
配置完畢,重啓網絡服務生效。
#service network restart
3.3.3 配置dhcp服務
#vi /etc/dhcpd.conf
ddns-update-style interim; ignore client-updates; allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.130 192.168.0.250; } option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; default-lease-time 21600; max-lease-time 43200; Next-server 192.168.0.251; Filename "/pxelinux.0"; |
配置完畢,重啓dhcp服務生效。
# service dhcpd restart
3.3.4 配置tftp服務
tftp是爲了給待安裝的客戶端機器發送啓動文件(包括initrd.img、vmlinuz、pxelinux.0、default)的簡單文件傳輸服務。這個配置比較簡單,只需把配置文件中的disable那項的yes改成no即可。
# vi /etc/xinetd.d/tftp
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } |
配置完畢,重啓xinetd服務生效
# service xinetd restart
3.3.5 配置syslinux
配置tftpboot目錄內的文件
複製 RedHat Enterprise Linux AS 5 update 4 安裝光盤中 /p_w_picpaths/pxeboot/ 目錄下的initrd.img和vmlinuz到/tftpboot目錄下。
#mount /dev/cdrom /mnt
#cp /mnt//p_w_picpaths/pxeboot/vmlinuz /tftpboot
#cp /mnt/p_w_picpaths/pxeboot/initrd.img /tftpboot
#cp /usr/lib/syslinux/pxelinux.0 /tftpboot
#mkdir /tftpboot/pxelinux.cfg
#cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
#chmod 755 /tftpboot/pxelinux.cfg/default
#vi /tftpboot/pxelinux.cfg/default
default linux prompt 1 timeout 600 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux kernel vmlinuz append initrd=initrd.img ks=ftp://192.168.0.251/ks.cfg ksdevice=eth0 # append initrd=initrd.img ks=http://192.168.0.251/ks.cfg ksdevice=eth0 label text kernel vmlinuz append initrd=initrd.img text label ks kernel vmlinuz append ks initrd=initrd.img label local localboot 1 label memtest86 kernel memtest append - |
/tftpboot 目錄下的內容如下:
-rw-r--r-- 1 root root 4266944 Feb 1 10:05 initrd.img -rw-r--r-- 1 root root 1545551 Feb 1 10:05 vmlinuz -rwxr-xr-x 1 root root 16466 Feb 1 10:04 pxelinux.0 -drwxr-xr-x 2 root root 4096 Feb 5 11:31 pxelinux.cfg .----------rwxr-xr-x 1 root root 103 Feb 5 11:31 default(此文件在pxelinux.cfg目錄下) |
3.3.6 配置vsftp或者http服務
默認安裝,無需配置,啓動服務。
# service vsftpd start
# service httpd start
3.3.7 配置ks.cfg文件
ks.cfg是待安裝機器的所有的配置文件,ks.cfg文件的獲取方式由兩種:一種是使用kickstart軟件在圖形界面下設置生成ks.cfg文件;另一種方法是在安裝過linux系統的服務器,/root目錄下都會自動生成一個anaconda-ks.cfg文件,裏面記錄了在安裝系統的時候所做的所有操作,可以使用這個文件進行編輯生成需要的ks.cfg文件。
將配置好的ks.cfg放置在/var/ftp目錄下或放置/var/www/html目錄下。
#cp ks.cfg /var/ftp/
#chmod 755 /var/ftp/ks.cfg
#cp ks.cfg /var/www/html/
#chmod 755 /var/ftp/ks.cfg
注:通過修改anaconda-ks.cfg 編輯出自己所要的ks.cfg一下使用的ks.cfg針對(RHEL5.4- HP DL360G7)
# Kickstart file automatically generated by anaconda. install url --url=ftp://192.168.0.251/rhel5u4 #url --url=http://192.168.0.251/rhel5u4 key 6efd911e6fea5d91 lang en_US.UTF-8 keyboard us network --device eth0 --bootproto dhcp network --device eth1 --onboot no --bootproto dhcp network --device eth2 --onboot no --bootproto dhcp network --device eth3 --onboot no --bootproto dhcp rootpw --iscrypted $1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1 firewall --disabled authconfig --enableshadow --enablemd5 selinux --disabled timezone Asia/Shanghai reboot services --disable auditd,autofs,avahi-daemon,bluetooth,cups,firstboot,iptables,ip6tables,kudzu,lm_sensors,lvm2-monitor,netfs,nfslock,pcscd,portmap,rhnsd,rpcgssd,rpcidmapd,sendmail,xfs,yum-updatesd user --name=wgliu --password=$1$MPqU6lgH$Zl.nNz7xZBmLYQGW0eqIc. --iscrypted bootloader --location=mbr --driveorder=cciss/c0d0 # 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 --initlabel --drives=cciss/c0d0 part /boot --fstype ext3 --size=200 part swap --size=4096 part / --fstype ext3 --size=100 --grow %packages @base @chinese-support @core @development-libs @development-tools @editors @ftp-server @legacy-software-development @legacy-software-support @system-tools @text-internet fipscheck device-mapper-multipath sgpio imake emacs audit net-snmp-utils sysstat iptraf -bluez-hcidump |
注意:
l bootloader --location=mbr --driveorder=cciss/c0d0
紅色部分爲HP 磁盤陣列控制器,各個廠商的控制器不同,需要做相應修改,可參考已安裝的服務器上的anaconda-ks.cfg。
l rootpw --iscrypted $1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1
root密碼的設置(紅色部分的由來)
[root@localhost ~]# openssl passwd -1
Password: (輸入你要設置的密碼)
Verifying - Password: (再次輸入你要設置的密碼)
$1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1(生成加密後的字符串)
l user --name=xxx --password=$1$MPqU6lgH$Zl.nNz7xZBmLYQGW0eqIc. --iscrypted
添加指定的用戶xxx,用戶密碼的設置同上。
l url --url=ftp://192.168.0.251/rhel5u4
網絡安裝源的設置,可以根據實際情況進行修改。
3.3.8 設置網絡安裝目錄樹
vsftp版安裝目錄樹
#mount /dev/cdrom /mnt
#mkdir /var/ftp/rhel5u4
#cp -rf /mnt/* /var/ftp/rhel5u4
複製過程等待時間較長.....
http版安裝目錄樹
#mount /dev/cdrom /mnt
#mkdir /var/ftp/rhel5u4
#cp -rf /mnt/* /var/www/html/rhel5u4
複製過程等待時間較長.....
4 啓動所有相關的服務
#service vsftpd restart
#service xinetd restart
#service dhcpd restart
5 客戶端服務器安裝
客戶端服務器安裝操作系統時,可以單臺通過網線直連pxe服務端服務器,也可以多臺通過交換機連接到pxe服務端服務器,客戶端服務器通電啓動時通常按f12(此按鍵因服務器生產廠家不同而可能不同)鍵進入pxe自動安裝。
6 附錄
ks.cfg文件的配置請參考redhat官方文檔:
https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html