在Linux系统中搭建PXE(Preboot Execution Environment)服务器,能够实现客户端通过网络启动并自动安装操作系统,极大简化大规模部署工作,以下将详细介绍在Linux环境下搭建PXE服务器的完整步骤、关键配置及注意事项。

环境准备与基础安装
搭建PXE服务器需满足硬件和网络条件:一台运行Linux系统的主机(建议使用CentOS或Ubuntu等主流发行版),确保主机与客户端处于同一局域网,且DHCP服务可用(若网络已有DHCP服务器,需避免IP冲突),首先更新系统软件包,安装必要的服务组件,包括TFTP服务器、HTTPD或NFS服务(用于存放安装镜像文件)以及syslinux(提供PXE启动内核)。
以CentOS系统为例,执行以下命令安装基础服务:
sudo yum update -y sudo yum install -y tftp-server httpd syslinux xinetd
安装完成后,需启动并设置服务开机自启:
sudo systemctl enable --now httpd tftp.socket xinetd
配置TFTP服务
TFTP(Trivial File Transfer Protocol)用于客户端下载启动文件,默认情况下,TFTP服务根目录为/var/lib/tftpboot,需将syslinux提供的启动文件复制到该目录,关键文件包括pxelinux.0(PXE启动引导程序)、menu.c32(启动菜单支持)以及chain.c32(链式加载支持)。
复制启动文件的命令如下:
sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
sudo cp /usr/share/syslinux/{menu.c32,chain.c32,ldlinux.c32} /var/lib/tftpboot/
创建启动菜单配置目录及文件:

sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg sudo nano /var/lib/tftpboot/pxelinux.cfg/default
在default文件中配置启动菜单选项,示例内容如下:
default menu.c32
timeout 300PXE Boot Menu
label install
menu label ^Install CentOS 7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img inst.repo=http://192.168.1.100/centos7/ ip=dhcp
label local
menu label Boot from ^Local Drive
localboot 0x
配置HTTP服务存放安装镜像
HTTP服务用于提供操作系统的安装镜像文件,相比TFTP具有更高的传输效率,创建镜像存放目录,并将CentOS ISO镜像挂载到该目录:
sudo mkdir -p /var/www/html/centos7 sudo mount -o loop /path/to/CentOS-7-x86_64-DVD.iso /var/www/html/centos7/
为使挂载永久生效,可编辑/etc/fstab文件添加以下行:
/path/to/CentOS-7-x86_64-DVD.iso /var/www/html/centos7 iso9660 loop 0 0
确保防火墙允许HTTP服务端口(80):
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
配置DHCP服务(可选)
若网络中无DHCP服务器,需在PXE服务器上配置DHCP服务,为客户端分配IP地址并指定启动文件位置,安装dhcp服务:
sudo yum install -y dhcp
编辑配置文件/etc/dhcp/dhcpd.conf,示例配置如下:

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
next-server 192.168.1.100; # PXE服务器IP
filename "pxelinux.0";
}
启动DHCP服务并设置开机自启:
sudo systemctl enable --now dhcpd
支持多系统安装
若需同时支持多种操作系统安装(如Ubuntu、Windows等),需在TFTP根目录下创建对应系统的启动文件目录,并在pxelinux.cfg/default中添加新的菜单项,例如添加Ubuntu安装选项:
label ubuntu
menu label ^Install Ubuntu 20.04
kernel ubuntu/pxelinux.0
append initrd=ubuntu/initrd.gz boot=casper netboot=nfs nfs-server=192.168.1.100:/var/lib/tftpboot/ubuntu/ --
同时需准备Ubuntu的启动文件,并将其存放在/var/lib/tftpboot/ubuntu/目录下。
常见问题与解决方案
- 客户端无法获取IP地址:检查DHCP服务配置,确保
next-server和filename参数正确;若使用独立DHCP服务器,需确认PXE服务器IP是否在允许范围内。 - 启动菜单不显示:检查TFTP服务是否正常运行,确认
pxelinux.0及菜单文件路径正确;防火墙是否拦截TFTP端口(69)。 - 安装过程中镜像加载失败:验证HTTP服务是否正常,确保镜像文件路径与菜单中
inst.repo参数一致;检查客户端是否能访问PXE服务器。
安全与优化建议
- 访问控制:通过HTTP服务的
.htaccess文件或TFTP服务的配置文件限制客户端IP,仅允许授权设备访问。 - 日志监控:定期检查
/var/log/httpd/access_log和/var/log/xferlog(TFTP日志),及时发现异常访问。 - 性能优化:对于大规模部署,可考虑使用NFS替代HTTP服务,或配置多台PXE服务器实现负载均衡。
通过以上步骤,即可成功搭建功能完善的Linux PXE服务器,实现操作系统的网络批量部署,实际应用中,可根据需求调整启动菜单、安装参数及服务配置,进一步提升部署效率和灵活性。



















