深入浅出PXE网络装系统:从原理到实战
一、什么是PXE?
PXE(Preboot eXecution Environment)是Intel开发的一种网络引导标准,允许计算机从网络接口卡启动,无需本地存储设备。它广泛应用于批量部署操作系统、无盘工作站和系统恢复场景。
二、PXE工作流程
- 客户端启动:BIOS/UEFI启用网络启动,发送DHCP Discover广播。
- DHCP分配IP:DHCP服务器响应,提供IP地址并指定引导文件(如pxelinux.0)的位置(通常为TFTP服务器地址)。
- TFTP下载引导文件:客户端通过TFTP从服务器获取引导加载程序。
- 加载配置文件:引导加载程序根据客户端MAC或IP从TFTP读取配置文件(如default)。
- 下载内核和initrd:根据配置文件指示,从TFTP或HTTP下载vmlinuz和initrd.img。
- 启动安装程序:内核启动后,挂载initrd,加载安装源(如NFS、HTTP、FTP),开始操作系统安装。
三、关键组件
- DHCP服务器:分配IP并指示引导文件位置(next-server和filename选项)。
- TFTP服务器:提供引导加载程序(pxelinux.0、grubx64.efi等)及配置文件。
- HTTP/FTP/NFS服务器:存放操作系统安装源(ISO解压后的文件)。
- Kickstart或Preseed文件:实现无人值守自动安装。
四、搭建步骤(以CentOS 8为例)
1. 准备环境
安装所需服务:yum install dhcp tftp-server httpd syslinux-tftpboot -y
2. 配置DHCP
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
next-server 192.168.1.10; # TFTP服务器IP
filename "pxelinux.0";
}
3. 配置TFTP
将syslinux提供的引导文件复制到tftp根目录(/var/lib/tftpboot):
cp /usr/share/syslinux/{pxelinux.0,menu.c32,vesamenu.c32} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
创建默认配置文件 /var/lib/tftpboot/pxelinux.cfg/default:
default menu.c32
prompt 0
timeout 100
menu title PXE Boot Menu
label centos8
menu label ^Install CentOS 8
kernel centos8/vmlinuz
append initrd=centos8/initrd.img inst.repo=http://192.168.1.10/centos8
4. 准备安装源
挂载ISO到HTTP目录:mount CentOS-8.5.2105-x86_64-dvd1.iso /var/www/html/centos8
5. 启动服务
systemctl enable --now dhcpd tftp httpd
firewall-cmd --add-service={dhcp,tftp,http} --permanent
firewall-cmd --reload
6. 客户端测试
将客户端BIOS设置为网络启动,重启后应看到PXE菜单,选择安装即可。
五、自动化安装(Kickstart)
生成ks.cfg文件并放在HTTP服务器上,在append中增加ks=http://server/ks.cfg即可实现无人值守。
六、常见问题
- 客户端无法获取IP:检查DHCP配置、防火墙、网卡支持。
- TFTP下载超时:确认TFTP服务器路径和权限,文件是否存在。
- Unable to mount NFS:确保NFS共享并防火墙放行。
- UEFI启动需使用grubx64.efi:配置不同,bootloader方式变化。
七、总结
PXE装系统是现代数据中心批量部署的利器。通过合理规划DHCP、TFTP和HTTP服务,结合Kickstart,可以极大提升运维效率。掌握其原理和排错思路,是系统管理员的基本技能。