一、PXE簡介
PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel公司開發的網絡啟動技術,工作于Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,并由此支持通過網絡啟動操作系統,在啟動過程中,終端要求服務器分配IP地址,再用TFTP(trivialfile transfer protocol)或MTFTP(multicasttrivial file transfer protocol)協議下載一個啟動軟件包到本機內存中執行,由這個啟動軟件包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。
嚴格來說,PXE 并不是一種安裝方式,而是一種引導方式
二、PXE的工作原理流程介紹及示意圖
PXE的工作原理流程主要分為如下幾步
(1)PXEClient向DHCP發送請求
PXEClient從自己的PXE網卡啟動,通過PXE BootROM(自啟動芯片)會以UDP協議發送一個廣播請求,向本網絡中的DHCP服務器索取IP。
(2)DHCP服務器提供信息
DHCP服務器收到客戶端的請求,驗證是否是合法的PXE Client的請求,驗證通過它將給客戶端一個提供相應,這個提供相應中包含了為客戶端分配的IP地址、pxelinux啟動程序(TFTP)位置,以及配置文件所在位置。
(3)PXE客戶端請求下載啟動文件
客戶端收到服務器的回應后,會回應一個幀,以請求傳送啟動所需文件。這些文件包括:pxelinux.0、pxelinux.cfg/default、initrd.img等文件。
(4)BootServer響應客戶端請求并傳送文件
當服務器收到客戶端的請求后,他們之間之后將有更多的信息在客戶端與服務器之間作應答,用以決定啟動參數。BootROM由TFTP通訊協議從Boot Server下載啟動安裝程序所必須的文件(pxelinux.0、pxelinux.cfg/default)。default文件下載完成后,會根據該文件中定義的引導順序,啟動Liunx安裝程序的引導內核。
(5)請求下載自動應答文件
客戶端通過pxelinux.cfg/default文件成功的引導Linux安裝內核后,安裝程序首先必須確定你通過什么介質來安裝linux
如果通過網絡安裝(NFS.FTP.HTTP),則會在這個時候初始化網絡,并定位安裝源位置。
接著會讀取default文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。
(6)客戶端將開始安裝操作系統
將ks.cfg文件下載回來后,通過該文件找到OS Server,并安裝該文件的配置請求下載安裝過程需要的軟件包。
OSServer和客戶端建立連接后,將開始傳輸軟件包,客戶端將開始安裝操作系統。安裝完成后,將提示重新引導計算機。
三、centos系統下PXE服務器的搭建與部署
接下來結合下面的拓撲,用VMWare Workstation模擬PXE服務器的搭建與部署
具體操作步驟
1、安裝DHCP服務
[root@CentOSPXEServer~]# yum install -y dhcp
編輯vi dhcpd.conf DHCP服務配置文件/etc/dhcp/dhcpd.conf
#新增如下dhcp配置
next-server10.112.105.253;
filename"pxelinux.0";
subnet10.112.105.0 netmask 255.255.255.0 {
range 10.112.105.2 10.112.105.250;
option subnet-mask 255.255.255.0;
option routers 10.112.105.254;
option domain-name-servers 114.114.114.114;
default-lease-time 600;
max-lease-time 7200;
}
啟動dhcpd服務并設置為開機自啟動
[root@CentOSPXEServer~]# /etc/rc.d/init.d/dhcpd start
Startingdhcpd: [ OK ]
[root@CentOSPXEServer~]# chkconfig dhcpd on
[root@CentOSPXEServer~]#
2、安裝TFTP服務
[root@CentOSPXEServer~]#yum install tftp-server xinetd
TFTP服務使用Xinetd服務管理,編輯/etc/xinetd.d/tftp,將文件中disable的參數由yes改為no
[root@CentOSPXEServer~]# /etc/rc.d/init.d/xinetd start
Startingxinetd: [ OK ]
[root@CentOSPXEServer~]# chkconfig xinetd on
[root@CentOSPXEServer~]# chkconfig xinetd --list
xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@CentOSPXEServer~]#
3、接下來配置支持PXE引導啟動程序
PXE啟動映像文件由syslinux軟件提供,只要安裝了syslinux,就會生成一個pxelinux.0文件,將這個文件復制到TFTP默認路徑即可。syslinux是一個功能強大的引導加載程序
[root@CentOSPXEServer~]# yum install syslinux
[root@CentOSPXEServer~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@CentOSPXEServer~]#
[root@CentOSPXEServer~]# cd /var/lib/tftpboot/
[root@CentOSPXEServertftpboot]#
[root@CentOSPXEServertftpboot]# ll -trh
total28K
-rw-r--r--.1 root root 27K Oct 20 19:24 pxelinux.0
接下來掛載CentOS6.9的啟動DVD鏡像到/mnt/cdrom目錄
[root@CentOSPXEServer~]# mkdir /mnt/cdrom
[root@CentOSPXEServer~]# mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom/
[root@CentOSPXEServer~]# mkdir /var/lib/tftpboot/PXEServer
[root@CentOSPXEServer~]# cp /mnt/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/PXEServer/
[root@CentOSPXEServer~]# cp /mnt/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/PXEServer/
[root@CentOSPXEServer~]# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
[root@CentOSPXEServer~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@CentOSPXEServer~]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改default文件
[root@CentOSPXEServer~]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
[root@CentOSPXEServer~]#
[root@CentOSPXEServer~]# vi /var/lib/tftpboot/pxelinux.cfg/default
defaultmenu.c32
timeout100
menutitle Welcome to CentOS 6.9 PXE!
menucolor border 0 #ffffffff #00000000
menucolor sel 7 #ffffffff #ff000000
menucolor title 0 #ffffffff #00000000
menu colortabmsg 0 #ffffffff #00000000
menucolor unsel 0 #ffffffff #00000000
menucolor hotsel 0 #ff000000 #ffffffff
menucolor hotkey 7 #ffffffff #ff000000
menucolor scrollbar 0 #ffffffff #00000000
labellinux
menu label ^1)Install CentOS 6.9 From PXEServer
kernel PXEServer/vmlinuz
Append initrd=PXEServer/initrd.imgmethod=http://10.112.105.253/PXEServer devfs=nomount
labellocal
menu label ^2)Boot from local drive
localboot 0xffff
#可作為模板
4、安裝HTTP服務并配置httpd服務
先把鏡像中文件全部復制到/var/lib/tftpboot/PXEServer/目錄下
接下里安裝并配置httpd服務
[root@CentOSPXEServer~]# yum install httpd
[root@CentOSPXEServer~]# cd /etc/httpd/conf.d/
[root@CentOSPXEServerconf.d]# ll -trh
total8.0K
-rw-r--r--.1 root root 299 Feb 19 2018 welcome.conf
-rw-r--r--.1 root root 392 Jun 19 23:45 README
[root@CentOSPXEServerconf.d]# mv welcome.conf welcome.conf_bak
[root@CentOSPXEServerconf.d]# vi pxeboot.conf
Alias/PXEServer /var/lib/tftpboot/PXEServer
<Directory/var/lib/tftpboot/PXEServer>
Options Indexes FollowSymLinks
Order Allow
Allow from all
</Directory>
[root@CentOSPXEServerconf.d]# service httpd restart
[root@CentOSPXEServerconf.d]# chkconfig httpd on
[root@CentOSPXEServerconf.d]#
[root@CentOSPXEServerconf.d]# chkconfig httpd --list
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
測試httpd服務是否部署成功,能否正常訪問
5、接下來PXEClient開機啟動測試驗證
1)新建的虛擬機PXEClient進行測試,開機選擇從網絡啟動
2、這時出現之前自定義的菜單
3)選擇從PXE啟動后開始加載vmlinuz initrd.img等啟動文件
4)接下來選擇語言鍵盤,設置IP
5)就進入熟悉的系統安裝界面了
PXE服務器的搭建與部署先簡單介紹到這里,后續再介紹重點PXE+Kickstart無人值守安裝