PXE介绍
Preboot Excution Environment 预启动执行环境,是由Intel公司研发的,目前的网卡都支持此功能,基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,PXE可以引导和安装Windows,linux等多种操作系统。工作原理如下:
- 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自动化安装CentOS7和6
安装前准备:
服务器Linux版本:CentOS7
关闭防火墙和SELINUX,DHCP服务器静态IP
getenforce:Disabled
systemctl stop iptables.service
systemctl status firewalld
systemctl disable firewalld
安装软件包
配置yum repository,同时支持OS和EPEL源
yum install httpd tftp-server dhcp syslinux system-config-kickstart
systemctl enable dhcpd httpd tftp.socket
systemctl start httpd
systemctl start tftp.socket
准备YUM源
mkdir /var/www/html/centos/{6,7}/ -pv
vim /etc/fstab()
/dev/sr0 /var/www/html/centos/6 iso9660 defaults 0 0
/dev/sr1 /var/www/html/centos/7 iso9660 defaults 0 0
mount -a
df
/dev/sr0 6049912 6049912 0 100% /var/www/html/centos/6
/dev/sr1 9176232 9176232 0 100% /var/www/html/centos/7
准备ks文件
mkdir /var/www/html/ksdir/{6,7} -pv
分别准备CentOS7和centOS6的ks.cfg,并且copy到相应目录下
chmod +r /var/www/html/ksdir/7/ks7_desktop.cfg
chmod +r /var/www/html/ksdir/6/ks6_mini.cfg
配置dhcp服务
subnet 192.168.30.0 netmask 255.255.255.0 {
range 192.168.30.0 192.168.30.10;
option routers 192.168.30.254;
option domain-name-servers 223.6.6.6;
next-server 192.168.30.44;
filename "pxelinux.0";
}
systemctl start dhcp
准备PXE相关文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/centos{6,7}
cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7/
cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6/
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 Evan'sCentOS 7
label linux
menu label ^Install Desktop CentOS 7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://192.168.30.44/ksdir/7/ks7_desktop.cfg
label check
menu label install ^Mini CentOS 6
menu default
kernel centos6/vmlinuz
append initrd=centos6/initrd.img ks=http://192.168.30.44/ksdir/6/ks6_mini.cfg
label local
menu label Boot from ^local drive
localboot 0xffff
menu end