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下载安装源文件,读取自动化安装脚本
PXE自动化安装CentOS 7
? 安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
? 安装软件包
httpd tftp-server dhcp syslinux system-config-kickstart
? 配置文件共享服务:
systemctl enable httpd
systemctl start httpd
mkdir /var/www/html/centos/7
mount /dev/sr0 /var/www/html/centos/7
? 准备kickstart文件
/var/www/html/ks/centos7.cfg 注意:权限
? 配置tftp服务
systemctl enable tftp.socket
systemctl start tftp.socket
PXE自动化安装CentOS 7
? 配置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 enabled dhcpd
systemctl start dhcpd
PXE自动化安装CentOS 7
? 准备相关文件
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /misc/cd/isolinux/isolinux.cfg
/var/lib/tftpboot/pxelinux.cfg/default
文件列表如下:
/var/lib/tftpboot/
├ ├── initrd.img
├ ├── menu.c32
├ ├── pxelinux.0
├ ├── pxelinux.cfg
│ └── default
└── vmlinuz
PXE自动化安装CentOS 7
? 准备启动菜单
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