PXE网络批量安装可实现服务器或终端开机自动获取镜像并无人值守部署。需依次部署DHCP与TFTP服务、挂载导出系统源、编写Kickstart应答文件、配置PXE启动菜单,并调整防火墙与SELinux策略以保障各服务通信正常。

如果企业需要为多台新购服务器或办公终端快速部署统一操作系统,PXE网络批量安装可实现开机即自动获取系统镜像并完成无人值守安装。以下是基于Linux环境搭建PXE服务并执行无人值守部署的具体操作流程:
一、部署DHCP与TFTP服务
DHCP服务用于向客户端分配IP地址并告知其PXE启动所需的TFTP服务器地址和引导文件名;TFTP服务则负责传输引导程序(如pxelinux.0)及内核、初始化镜像等小体积启动文件。
1、安装dhcpd与tftp-server软件包:yum install -y dhcp tftp-server xinetd
2、编辑DHCP主配置文件/etc/dhcp/dhcpd.conf,添加以下内容:subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; option routers 192.168.10.1; next-server 192.168.10.10; filename "pxelinux.0"; }
3、启用并启动xinetd托管的tftp服务:systemctl enable xinetd && systemctl start xinetd
4、创建TFTP根目录并复制Syslinux引导文件:mkdir -p /var/lib/tftpboot/pxelinux.cfg && cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
二、挂载并导出系统安装源
需将ISO镜像中的isolinux目录内容迁移至TFTP可访问路径,并将vmlinuz与initrd.img提取为PXE启动所需核心组件,同时提供HTTP或FTP方式供ks.cfg与完整RPM包下载。
1、挂载CentOS安装镜像到/mnt:mount -o loop /root/CentOS-7-x86_64-DVD-2009.iso /mnt
2、复制内核与初始化镜像到TFTP目录:cp /mnt/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
3、安装并启用httpd服务:yum install -y httpd && systemctl enable httpd && systemctl start httpd
4、将整个ISO内容拷贝至Web根目录供安装过程调用:cp -r /mnt/* /var/www/html/centos7/
三、编写Kickstart自动化应答文件
Kickstart文件(ks.cfg)定义分区方案、软件包选择、网络配置、root密码等全部安装参数,使安装过程无需人工干预。该文件必须放置于HTTP服务器可访问路径下,并在PXE菜单中指定引用地址。
1、使用system-config-kickstart图形工具生成基础ks.cfg,或手动创建文本文件:vim /var/www/html/ks.cfg
2、在ks.cfg中设置明文密码需先加密处理,执行命令生成SHA512密码哈希:python3 -c "import crypt; print(crypt.crypt('MyPass123', crypt.mksalt(crypt.METHOD_SHA512)))"
3、确保ks.cfg开头包含有效URL声明:url --url="http://192.168.10.10/centos7/"
4、设置安装后重启行为,在文件末尾添加:reboot --eject
四、配置PXE启动菜单
pxelinux.cfg/default文件控制客户端启动时显示的选项列表及对应内核参数,需明确指定ks.cfg位置、安装源路径与内核启动参数,以触发无人值守流程。
1、创建默认菜单配置文件:vim /var/lib/tftpboot/pxelinux.cfg/default
2、写入标准CentOS 7启动项,启用ks自动安装模式:default centos7\nprompt 0\ntimeout 10\nlabel centos7\n kernel vmlinuz\n append initrd=initrd.img inst.ks=http://192.168.10.10/ks.cfg net.ifnames=0 biosdevname=0
3、调整/var/lib/tftpboot目录权限,确保tftp服务可读取所有文件:chmod -R 755 /var/lib/tftpboot
五、配置防火墙与SELinux策略
若防火墙处于启用状态或SELinux运行于enforcing模式,可能导致DHCP响应失败、TFTP文件无法下载或HTTP资源拒绝访问,从而中断PXE启动链路。
1、开放DHCP、TFTP及HTTP端口:firewall-cmd --permanent --add-service=dhcp && firewall-cmd --permanent --add-service=tftp && firewall-cmd --permanent --add-service=http && firewall-cmd --reload
2、检查SELinux布尔值是否允许tftp读取内容:setsebool -P tftp_home_dir on
3、验证HTTP服务是否能被局域网其他主机访问:curl -I http://192.168.10.10/centos7/.treeinfo
4、确认DHCP服务监听范围正确且无IP冲突:systemctl status dhcpd && journalctl -u dhcpd | tail -20










