PXE批量装机核心是服务端部署DHCP、TFTP、HTTP/FTP/NFS及Kickstart四大服务:DHCP分配IP并指定TFTP地址和引导文件,TFTP传输pxelinux.0、vmlinuz、initrd.img等小文件,HTTP/FTP/NFS提供系统安装源,Kickstart实现无人值守安装。

Linux 系统中通过网络引导批量安装多台机器,核心是搭建 PXE(Preboot Execution Environment)服务端,让裸机开机后自动从网络获取引导文件、内核、镜像和安装指令,全程无需 U 盘或光盘。关键不在于单台装得多快,而在于服务端一次配置、客户端开箱即连。
服务端必须部署的四大基础服务
PXE 不是单一软件,而是多个服务协同工作的流程。缺一不可:
- DHCP 服务:给每台裸机分配 IP,并明确告诉它“TFTP 服务器在哪、启动文件叫什么”(例如 next-server 192.168.80.100 + filename "pxelinux.0");
- TFTP 服务:只传小文件(pxelinux.0、vmlinuz、initrd.img),基于 UDP,根目录通常是 /var/lib/tftpboot;
- HTTP/FTP/NFS 服务:提供完整的系统安装源(如 CentOS 7 的 /mnt 挂载点),推荐用 HTTP(httpd),速度快、易调试;
- Kickstart(ks.cfg):定义无人值守规则——分区怎么划、装哪些包、设什么 root 密码、网络怎么配,文件通过 HTTP 提供,启动时加参数 ks=http://192.168.80.100/ks.cfg 即可生效。
客户端要做的只有三件事
不是改代码,而是调 BIOS 和网卡设置:
- 进 BIOS/UEFI,开启 Network Boot 或 PXE Boot,并把它设为第一启动项;
- 确认网卡支持 PXE(现代服务器主板基本都集成 BOOTROM,无需额外操作);
- 确保和 PXE 服务端在同一个二层局域网(不能跨路由器,禁用其他 DHCP 干扰)。
关键配置细节不能跳过
很多失败不是原理错,而是卡在几个实操节点:
- 服务端必须用静态 IP,且关闭防火墙(systemctl disable --now firewalld)和 SELinux(setenforce 0);
- TFTP 配置里 wait = no(允许多客户端并发下载),disable = no(启用服务),server_args = -s /var/lib/tftpboot(路径必须严格一致);
- DHCP 配置中 subnet 范围要覆盖所有待装机器,range 地址池别太小,避免 IP 耗尽;
- 所有引导文件(pxelinux.0、vmlinuz、initrd.img)要从 ISO 的 images/pxeboot/ 复制到 TFTP 根目录,pxelinux.cfg/default 菜单文件需手动创建并写对内核启动参数。
验证和排错最常用的方法
不用等全装完,几步就能判断链路是否通:
- 裸机开机后看到 DHCP... OK → TFTP download: pxelinux.0 → 进入菜单界面,说明前两步成功;
- 在服务端用 tcpdump -i eth0 port 69 抓包,看有没有 TFTP 请求;
- 用浏览器访问 http://192.168.80.100/centos7/(你的安装源路径),确认能列出 Packages/ repodata/ 等目录;
- 检查 ks.cfg 文件权限(chmod 644)、路径拼写、URL 是否可被客户端路由到。


















