所谓的PXE是Preboot Execution Environment的缩写,字面上的意思是开机前的执行环境。
要达成PXE必须要有两个环节:
(1)一个是客户端的网卡必须要支持PXE用户端功能,并且开机时选择从网卡启动,这样系统才会以网卡进入PXE客户端的程序;
(2)一个是PXE服务器必须要提供至少含有DHCP以及TFTP的服务!
且其中:
· DHCP服务必须要能够提供客户端的网络参数,还要告知客户端TFTP所在的位置;
· TFTP则提供客户端的boot loader及kernel file下载路径。
还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件),才算是比较完整的PXE服务器。一般TFTP和DHCP服务都由同一台服务器提供,且大多数时候还提供NFS/FTP/HTTP服务,所以PXE服务器一般是提供3合一的服务。
以上内容来自网站:骏马金龙
使用PXE+Kickstart实现无人值守安装Linux系统的原理与流程
1、客户端开机启动项设置为PXE,BIOS中通常已设置了该选项。
2、客户端开机后,自动查找DHCP服务端,获取网络参数(IP地址、子网掩码等)。
3、客户端获取IP地址后,从tftp服务器下载文件pxelinux.0和default等其他文件。
4、根据default指定的vmlinuz,initrd.img启动系统内核并下载ks.cfg文件。
5、根据ks.cfg的设置信息从服务器(http/ftp/nfs)上下载RPM包安装系统,此时该服务器为yum服务器。
Linux: rhel-server-7.4-x86_64-dvd
VM:15.0.0-10134415
服务器 IP地址及掩码:192.168.10.1 255.255.255.0, 新建自定义网卡vm10仅主机模式。
客户端:硬件配置与服务器相同,网络连接模式:新建自定义网卡vm10仅主机模式。
为防止VMware Workstation自带的DHCP功能影响,先关闭vmnet10网卡自带的DHCP功能
设置服务端的网卡为新建的vmnet10
ctrl+N新建虚拟机
系统为linux-red hat,根据实际情况选择
删除不需要的硬件
安装无人值守所需的所有程序 SYSLinux是Linux系统的引导程序,SYSLinux安装完成后,在/usr/share/syslinux目录中,会产生大量的 引导文件。
yum -y install dhcp vsftpd xinetd tftp-server syslinux
这遍如果是用的yum外源,则需要先连接nat网卡或者桥接,等待服务安装完成后再换回vmnet10仅主机网卡
设置ip地址192.168.10.254
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
输入如下内容
filename:用于指定DHCP客户端访问的文件名。
pxelinux.0:PXE引导文件,可以解释default文件中的每个配置项,并根据配置项做出不同的反应。如等 待时间、启动器背景、启动菜单、内核引导等等
subnet 192.168.10.0 netmask 255.255.255.0{
range 192.168.10.100 192.168.10.200;
option routers 192.168.10.254;
option domain-name-servers 192.168.10.254;
option broadcast-address 192.168.10.255;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.10.254;
filename "pxelinux.0";
}
systemctl restart dhcpd //如果报错就是命令写错了,回去对下
随便再打开别的一台linux主机网卡设置为服务端同网卡vmnet10
设置自动获取即可获取ip并ping网关可以ping通
vim /etc/xinetd.d/tftp
将disable改为no
systemctl restart tftp
cd /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 ./
我的red hat的cdrom镜像是挂载在 /run/media/root/RHEL-7.4 Server.x86_65 (centos挂载路径可能不同,自行df -h查看)
cd /var/lib/tftpboot/
cp /run/media/root/RHEL-7.4\ Server.x86_64/images/pxeboot/vmlinuz ./
cp /run/media/root/RHEL-7.4\ Server.x86_64/images/pxeboot/initrd.img ./
cp /run/media/root/RHEL-7.4\ Server.x86_64/isolinux/vesamenu.c32 ./
cp /run/media/root/RHEL-7.4\ Server.x86_64/isolinux/boot.msg ./
mkdir pxelinux.cfg
cp /run/media/root/RHEL-7.4\ Server.x86_64/isolinux/isolinux.cfg pxelinux.cfg/default
确保复制进去
vim pxelinux.cfg/default
把第1行default vesamenu.c32修改为default linux
把第64行append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.4\x20Server.x86_64 rd.live.check quiet
修改为append initrd=initrd.img ks=ftp://192.168.10.254/ks.cfg
复制应答文件模版(anaconda-ks.cfg)到ftp服务的主目录中并修改权限。
cd /var/ftp/
cp /root/anaconda-ks.cfg ks.cfg
chmod 644 ks.cfg
vim ks.cfg
把第7行cdrom修改为url --url="ftp://192.168.10.254/pub"
把第33行clearpart --none --initlabel修改为clearpart --all --initlabel(擦除系统上原有所有分区)
在第34行添加reboot(系统安装好后自动重启)
mount /dev/cdrom /var/ftp/pub/
重启dhcp、xinetd、ftp的服务进程并加入开机启动项。
systemctl restart dhcpd
systemctl enable dhcpd
systemctl restart xinetd
systemctl enable xinetd
systemctl restart vsftpd
systemctl enable vsftpd
firewall-cmd --permanent --add-service=tftp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
setsebool -P ftpd_full_access=on