CentOS PXE无人安装是一种高效、自动化的操作系统部署方式,特别适用于企业级环境中的批量服务器部署,通过PXE(Preboot Execution Environment)技术,计算机可以通过网络启动并从服务器加载操作系统安装文件,配合Kickstart配置文件实现无人值守安装,大幅减少人工干预,提高部署效率和一致性,本文将详细介绍CentOS PXE无人安装的原理、环境搭建、配置步骤及注意事项。

PXE无人安装原理
PXE是一种网络启动标准,允许计算机通过网络接口卡(NIC)从远程服务器获取操作系统镜像并启动,其工作流程主要包括:客户端BIOS/UEFI设置从网络启动,通过DHCP服务器获取IP地址及PXE服务器地址;从TFTP服务器下载引导文件(如pxelinux.0);加载Kickstart配置文件;根据配置文件自动完成CentOS系统的安装,整个过程无需人工干预,适用于大规模部署场景。
环境准备
在开始配置前,需准备以下环境和工具:
- 服务器端:一台运行CentOS系统的服务器,配置静态IP地址,确保网络稳定。
- 客户端:支持PXE启动的计算机,需在BIOS/UEFI中启用网络启动选项。
- 软件依赖:安装必要的软件包,包括DHCP、TFTP、HTTP/SFTP(用于存放安装镜像)及Syslinux(提供PXE引导文件)。
- CentOS镜像:下载CentOS官方ISO镜像,并挂载到指定目录。
详细配置步骤
安装并配置DHCP服务器
DHCP服务器用于为客户端分配IP地址及PXE引导信息,执行以下命令安装DHCP服务:
yum install dhcp -y
编辑配置文件/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 subnet-mask 255.255.255.0;
next-server 192.168.1.10; # PXE服务器IP
filename "pxelinux.0";
}
启动并设置开机自启:
systemctl enable dhcpd systemctl start dhcpd
配置TFTP服务器
TFTP用于传输引导文件,安装TFTP服务:

yum install tftp-server -y
修改配置文件/etc/xinetd.d/tftp,将disable = yes改为no,创建引导文件目录并复制文件:
mkdir -p /var/lib/tftpboot/pxelinux.cfg cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /mnt/isolinux/* /var/lib/tftpboot/ # 挂载CentOS ISO后复制文件
启动TFTP服务:
systemctl enable tftp systemctl start tftp
搭建HTTP服务器
HTTP服务器用于存放CentOS安装镜像和Kickstart配置文件,安装Apache:
yum install httpd -y systemctl enable httpd systemctl start httpd
将CentOS ISO镜像挂载到/var/www/html/centos目录:
mkdir -p /var/www/html/centos mount -o loop /path/to/CentOS.iso /var/www/html/centos
创建Kickstart配置文件
Kickstart文件定义安装过程中的自动化参数,如分区、网络、用户等,示例文件/var/www/html/ks.cfg内容如下:
#version=DEVEL
install
url --url="http://192.168.1.10/centos"
network --bootproto=dhcp --onboot=yes
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
timezone Asia/Shanghai --isUtc --nontp
rootpw --plaintext password
clearpart --all --initlabel
part /boot --fstype="xfs" --size=1024
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --size=1 --grow
bootloader --location=mbr --boot-drive=sda
zerombr
reboot
%packages
@^minimal
@core
%end
%post
echo "Installation completed" > /etc/motd
%end
将Kickstart文件放置在HTTP服务器可访问的目录,并确保权限正确。

配置PXE启动菜单
编辑/var/lib/tftpboot/pxelinux.cfg/default文件,添加以下内容:
default centos7
label centos7
kernel vmlinuz
append initrd=initrd.img inst.ks=http://192.168.1.10/ks.cfg ip=dhcp
测试与优化
- 测试:在客户端设置网络启动,观察是否能自动加载安装程序并完成部署。
- 优化:可根据实际需求调整Kickstart参数,如添加软件包、配置防火墙规则等,为提高部署速度,可考虑使用多线程TFTP或NFS替代HTTP。
注意事项
- 网络环境:确保客户端与服务器在同一网络段,防火墙允许相关端口(DHCP:67/68, TFTP:69, HTTP:80)。
- 镜像完整性:验证CentOS ISO镜像和Kickstart文件的完整性,避免安装失败。
- 安全性:在生产环境中,建议对Kickstart文件中的密码进行加密,并限制访问权限。
FAQs
Q1: PXE安装过程中提示“无法找到Kickstart文件”如何解决?
A: 检查Kickstart文件路径是否正确,确保HTTP服务正常启动且文件可访问,可通过浏览器访问http://服务器IP/ks.cfg验证,同时确认TFTP目录中的引导文件是否完整。
Q2: 如何为不同硬件规格的客户端定制化安装?
A: 可通过PXE启动菜单的标签功能实现差异化配置,为不同型号的服务器创建不同的Kickstart文件,并在pxelinux.cfg/default中添加多个标签项,客户端根据硬件选择对应的安装选项。