利用 PXE 实现自动化系统部署
PXE介绍
PXE:Preboot Excution Environment,预启动执行环境,是由Intel公司研发,基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,可以引导和安装Windows,linux等多种操作系统。
PXE启动工作原理

利用PXE实现自动化安装流程
在Rocky9 上实现PXE自动化安装rocky9
安装前准备
关闭防火墙和SELINUX,DHCP服务器静态IP。
网络要求:关闭Vmware软件中的DHCP服务,基于NAT模式。
示例
[root@Rocky ~]# yum install dhcp-server tftp-server httpd syslinux-nonlinux -y
[root@Rocky ~]# systemctl enable –now httpd tftp dhcpd
配置dhcp服务
[root@Rocky ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "example.org";
option domain-name-servers 223.5.5.5, 114.114.114.114;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.101.0 netmask 255.255.255.0 {
range 192.168.101.100 192.168.101.200;
option routers 192.168.101.2;
next-server 192.168.101.19;
filename "pxelinux.0";
}
准备相关目录
[root@Rocky ~]# mkdir -pv /var/www/html/rocky/9/os/x86_64/
[root@Rocky ~]# mount /dev/sr0 /var/www/html/rocky/9/os/x86_64/
准备kickstart文件
[root@Rocky ~]# mkdir /var/www/html/ks/
[root@Rocky ~]# vim a.cfg
# Network information
network –bootproto=dhcp –device=ens160 –ipv6=auto –activate
# Use CDROM installation media
cdrom
%packages
# Use CDROM installation media
cdrom
%packages
network –hostname=Rocky
# Use CDROM installation media
cdrom
network –hostname=Rocky
# Use CDROM installation media
%packages
@^minimal-environment
@standard
%end
# Run the Setup Agent on first boot
firstboot –enable
# Generated using Blivet version 3.6.0
ignoredisk –only-use=sda
# Partition clearing information
clearpart –none –initlabel
# Disk partitioning information
part /data –fstype="xfs" –ondisk=sda –size=51200
part / –fstype="xfs" –ondisk=sda –size=102400
part /boot –fstype="xfs" –ondisk=sda –size=1024
part swap –fstype="swap" –ondisk=sda –size=2048
# System timezone
timezone Asia/Shanghai –utc
# Root password
rootpw –iscrypted $6$aGXglqz1YsyoNR49$MGdIO5Yn36hzTYDXFxAcR2Xi4c5FHOMuuvEVGlIffS9pfkhs5z3UIv24BKh2vP9tVCOWaNhGV7M/ec.G6HCmf.
user –name=r –password=$6$hcGXX9Lxf1ao458C$WJUKYXyg1N1auKL1nYBpYWnVCFURsakFcTz5mk7lEXPbABwUkYPG.k0VDm4LcGqX8NjqV9ABDFseCJXCq6AQ.1
–iscrypted –gecos="r"
%post
# 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
# 禁用 SELinux
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
%end
"a.cfg" 58L, 1491B written
[root@Rocky ~]# cp a.cfg /var/www/html/ks/rocky.cfg
准备PXE启动相关文件
[root@Rocky ~]# mkdir /var/lib/tftpboot/rocky9
[root@Rocky ~]# cp /var/www/html/rocky/9/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/rocky9/
[root@Rocky ~]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
[root@Rocky ~]# cp /var/www/html/rocky/9/os/x86_64/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/
[root@Rocky ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@Rocky ~]# cp /var/www/html/rocky/9/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@Rocky ~]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── rocky9
├── initrd.img
└── vmlinuz
2 directories, 8 files
准备启动菜单文件
[root@Rocky ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600
menu title Install CentOS Linux
label linux9
menu label Auto Install CentOS Linux ^9
kernel rocky9/vmlinuz
append initrd=rocky9/initrd.img ks=http://192.168.101.19/ks/rocky.cfg
label manual
menu label ^Manual Install CentOS Linux 9.0
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.101.19/rocky/9/os/x86_64/
label rescue
menu label ^Rescue a CentOS Linux system 9
kernel rocky9/vmlinuz
append initrd=rocky9/initrd.img inst.repo=http://192.168.101.19/rocky/9/os/x86_64/ rescue
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
测试客户端基于PXE实现自动安装
新准备一台主机,设置网卡引导,可看到看启动菜单,并实现自动安装
注意:VMware workstation 对于不同的CentOS 版本,生成的虚拟机的硬件并不兼容。














