一、PXE工作原理
Ø Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0的位置信息一並傳送給Client
Ø Client向PXE Server上的TFTP發送獲取pxelinux.0請求消息,TFTP接收到消息之后再向Client發送pxelinux.0大小信息,試探Client是否滿意,當TFTP收到Client發回的同意大小信息之后,正式向Client發送pxelinux.0
Ø Client執行接收到的pxelinux.0文件
Ø Client向TFTP Server發送針對本機的配置信息文件(在TFTP 服務的pxelinux.cfg目錄下),TFTP將配置文件發回Client,繼而Client根據配置文件執行后續操作。
Ø Client向TFTP發送Linux內核請求信息,TFTP接收到消息之后將內核文件發送給Client
Ø Client向TFTP發送根文件請求信息,TFTP接收到消息之后返回Linux根文件系統
Ø Client啟動Linux內核
Ø Client下載安裝源文件,讀取自動化安裝腳本
二、CentOS 7搭建PXE自動化系統
通過CentOS 7搭建的PXE自動化系統安裝CentOS 7
² 安裝前准備:關閉防火牆和SELINUX,DHCP服務器靜態IP
² 安裝軟件包
# yum -y install httpd tftp-server dhcp syslinux system-config-kickstart
² 配置http文件共享服務:
# systemctl enable httpd
# systemctl start httpd
# mkdir -p /var/www/html/centos/7
# mount /dev/sr0 /var/www/html/centos/7 #掛載centos7安裝光盤到httpd服務的目錄
² 准備kickstart文件
將centos7的ks文件放置於 /var/www/html/ks/centos7.cfg
² 配置tftp服務
# systemctl enable tftp.socket
# systemctl start tftp.socket
² 配置DHCP服務
#vim /etc/dhcp/dhcpd.conf
option domain-name "example.com";
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.200;
filename "pxelinux.0";
next-server 192.168.100.100;
}
# systemctl enable dhcpd
# systemctl start dhcpd
² 准備相關文件
# yum -y install syslinux
# mkdir /var/lib/tftpboot/pxelinux.cfg/
# cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
# cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
# cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
² 准備啟動菜單
# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600
menu title PXE INSTALL MENU
label auto
menu label Auto Install CentOS 7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.100.100/ks/centos7.cfg
label manual
menu label Manual Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.100.100/centos/7
label local
menu default
menu label ^Boot from local drive
localboot 0xffff