一、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