PXE 高效批量网络装机 + Kickstart 无人值守部署实战
规模化部署:支持同时为数十台甚至上百台服务器装机,大幅提升部署效率全程自动化:从引导、安装到配置,全程无需手动干预,降低运维成本无介质化安装:无需光盘、U 盘等物理介质,通过网络即可完成装机,适配无光驱服务器PXE+Kickstart 是大规模 Linux 集群部署的必备技术,它彻底解决了传统装机方式效率低、管理难的问题。掌握该技术,不仅能提升运维工作效率,还能为自动化运维、云平台部署打下坚实基础
前言
在大规模 Linux 集群部署场景中,传统的光驱、U 盘装机方式效率极低,根本无法满足数十台甚至上百台服务器的快速交付需求。PXE(预启动执行环境)技术的出现,完美解决了这一痛点。它基于 C/S 架构,支持客户机通过网络下载引导镜像和安装文件,实现无介质化批量装机。再结合 Kickstart 工具,还能进一步实现无人值守自动安装,大幅提升部署效率。本文将以 OpenEuler 24.03 系统为例,详细讲解 PXE+Kickstart 的完整部署流程。
一、PXE 批量网络装机核心原理与前提条件
1.1 PXE 技术核心原理
PXE 技术工作在Client/Server 模式,其核心装机流程如下:
- PXE 客户机开机后,在 BIOS 中设置网络启动,向局域网发送 DHCP 请求
- DHCP 服务器为客户机分配 IP 地址,并告知 TFTP 服务器地址和 PXE 引导程序文件名
- 客户机从 TFTP 服务器下载引导程序
pxelinux.0和启动菜单配置文件 - 客户机根据启动菜单,加载 Linux 内核和初始化镜像文件
- 客户机通过 HTTP/FTP/NFS 协议从安装源服务器下载系统安装文件,开始安装
1.2 PXE 部署前提条件
要搭建 PXE 网络装机环境,必须满足以下三个核心条件:
| 条件类型 | 具体要求 |
|---|---|
| 硬件条件 | 客户机网卡支持 PXE 协议(集成 BOOTROM 芯片),主板支持网络引导 |
| 服务条件 | 网络中部署 DHCP 服务器,用于自动分配 IP 和指定引导文件位置 |
| 服务条件 | 网络中部署 TFTP 服务器,用于提供引导镜像、内核等文件的下载 |
说明:目前绝大多数服务器和 PC 都满足硬件条件,只需在 BIOS 中将启动顺序设为 “NETWORK” 或 “LAN” 即可。
二、PXE 远程安装服务器搭建实战
本实战环境中,PXE 服务器集成了Linux 安装源、TFTP 服务、DHCP 服务三大核心功能,具体配置信息如下:
| 设备角色 | IP 地址 | 操作系统 | 核心服务 |
|---|---|---|---|
| PXE 服务器 | 192.168.10.101 | OpenEuler 24.03 | FTP 安装源、TFTP、DHCP |
2.1 步骤 1:准备 Linux FTP 安装源
Linux 安装源可以通过 HTTP、FTP、NFS 三种协议发布,本文选择配置简单的 FTP 协议,具体操作如下:
# 1. 关闭防火墙和SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 2. 挂载系统光盘
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom/
# 3. 安装并配置vsftpd服务
dnf -y install vsftpd
mkdir /var/ftp/euler
cp -rf /media/cdrom/* /var/ftp/euler
# 4. 修改vsftpd配置,开启匿名访问
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
# 5. 启动并开机自启vsftpd
systemctl start vsftpd
systemctl enable vsftpd
2.2 步骤 2:安装并启用 TFTP 服务
TFTP(简单文件传输协议)用于为 PXE 客户机提供引导文件下载,其配置文件位于/etc/xinetd.d/tftp,具体操作如下:
bash
运行
# 1. 安装tftp-server软件包
dnf -y install tftp-server
# 2. 修改TFTP配置文件,开启服务
vim /etc/xinetd.d/tftp
service tftp
{
protocol = udp # TFTP基于UDP协议传输
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot # 指定TFTP根目录
disable = no # 将yes改为no,开启服务
}
# 3. 启动并开机自启tftp服务
systemctl start tftp
systemctl enable tftp
2.3 步骤 3:准备 Linux 内核与初始化镜像文件
PXE 装机需要 Linux 内核文件vmlinuz和初始化镜像文件initrd.img,这两个文件可以从系统光盘的images/pxeboot目录下获取,同时还需要复制 SYSLINUX 引导相关文件,具体操作如下:
# 1. 进入光盘pxeboot目录
cd /media/cdrom/images/pxeboot
# 2. 复制内核和初始化镜像到TFTP根目录
cp vmlinuz initrd.img /var/lib/tftpboot
# 3. 进入光盘isolinux目录,复制引导相关文件
cd /media/cdrom/isolinux/
cp ldlinux.c32 libcom32.c32 /var/lib/tftpboot/
关键文件说明:
ldlinux.c32:SYSLINUX 引导加载程序组件,负责加载 Linux 内核和初始化文件libcom32.c32:SYSLINUX 函数库文件,提供文件系统处理、内存分配等底层功能
2.4 步骤 4:准备 PXE 引导程序
PXE 引导程序pxelinux.0由syslinux软件包提供,安装该软件包并复制引导程序到 TFTP 根目录即可,具体操作如下:
# 1. 安装syslinux软件包
dnf -y install syslinux
# 2. 复制pxelinux.0到TFTP根目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
2.5 步骤 5:安装并配置 DHCP 服务
DHCP 服务器是 PXE 装机的核心,它不仅要为客户机分配 IP 地址,还要指定 TFTP 服务器地址和 PXE 引导程序文件名,具体配置操作如下:
# 1. 安装dhcp软件包
dnf -y install dhcp
# 2. 编辑DHCP配置文件
vim /etc/dhcp/dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.0 {
option routers 192.168.10.254; # 网关地址
option subnet-mask 255.255.255.0; # 子网掩码
option domain-name "bdqn.com"; # 域名
option domain-name-servers 192.168.10.254,202.106.0.20; # DNS服务器
default-lease-time 21600; # 默认租约时间
max-lease-time 43200; # 最大租约时间
range 192.168.10.200 192.168.10.250; # IP地址池
next-server 192.168.10.101; # TFTP服务器地址
filename "pxelinux.0"; # PXE引导程序文件名
}
# 3. 启动并开机自启dhcpd服务
systemctl start dhcpd
systemctl enable dhcpd
2.6 步骤 6:配置 PXE 启动菜单文件
PXE 启动菜单文件默认名为default,需要放在 TFTP 根目录的pxelinux.cfg子目录下,该文件用于指导客户机加载内核和安装源,具体配置如下:
# 1. 创建pxelinux.cfg目录
mkdir /var/lib/tftpboot/pxelinux.cfg
# 2. 编辑启动菜单文件
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto # 默认启动项
prompt 1 # 等待用户选择,1为等待,0为不等待
label auto # 启动项标签
kernel vmlinuz # 指定内核文件
append initrd=initrd.img inst.repo=ftp://192.168.10.101/euler # 指定初始化镜像和安装源
三、PXE 网络装机验证
完成 PXE 服务器搭建后,就可以对客户机进行装机测试,具体步骤如下:
- 客户机设置:将客户机(裸机或虚拟机)的 BIOS 启动顺序设为 “NETWORK” 或 “LAN”。如果是 VMware 虚拟机,内存需至少 2GB,否则会报错。
- 自动装机流程:客户机开机后,会自动向 DHCP 服务器请求 IP 地址,然后从 TFTP 服务器下载
pxelinux.0引导程序和启动菜单。按 Enter 键确认后,客户机会自动从 FTP 服务器下载安装文件,并进入图形化安装界面。 - 验证结果:当客户机成功进入系统语言选择界面时,说明 PXE 网络装机环境搭建成功,后续步骤与光盘安装一致。
注意:若使用 VMware 虚拟机测试,需禁用 VMware 自带的 DHCP 功能,否则会与 PXE 服务器的 DHCP 服务冲突。
四、Kickstart 无人值守安装配置
通过 PXE 技术装机虽然实现了无介质化,但安装过程中仍需要手动选择语言、分区、设置密码等操作,批量装机时效率仍有待提升。Kickstart 工具通过预定义应答文件ks.cfg,可以实现全程无人值守安装,彻底解放运维人员双手。
4.1 关键说明
在 OpenEuler 24.03、CentOS 8 等较新的系统版本中,不再支持system-config-kickstart图形化工具,需要手动编辑ks.cfg应答文件。
4.2 步骤 1:编辑 Kickstart 应答文件ks.cfg
ks.cfg文件包含系统安装的所有配置项,包括语言、时区、分区、软件包等,具体内容如下:
vim /root/ks.cfg
# 指定安装源
url --url="ftp://192.168.10.101/euler"
# 系统语言设置
lang zh_CN.UTF-8
keyboard us
# 网络配置:DHCP自动获取IP
network --bootproto=dhcp --device=eth0 --activate
# 安全策略:启用shadow密码,加密算法为sha512
authselect --enableshadow --passalgo=sha512
selinux --enforcing
# root密码设置,密码为aptech1!
rootpw aptech1!
# 时区设置:上海时区
timezone Asia/Shanghai
# 分区方案:自动分区,使用LVM,文件系统为ext4
autopart --type=lvm --fstype=ext4
bootloader --location=mbr # 引导程序安装位置为MBR
# 清除旧系统并初始化磁盘标签
clearpart --all --initlabel
# 软件包选择:最小化安装环境
%packages --nocore
@^minimal-environment
kernel
grub2
efibootmgr
%end
# 后安装脚本:安装完成后执行的操作
%post
# 关闭防火墙并禁止开机自启
systemctl disable firewalld
# 开启root用户SSH登录(默认注释,按需启用)
# sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
%end
# 安装完成后自动重启
reboot
4.3 步骤 2:启用 Kickstart 无人值守安装
要实现无人值守安装,需要将ks.cfg文件放到 FTP 服务器目录下,并修改 PXE 启动菜单,添加 Kickstart 参数,具体操作如下:
# 1. 将ks.cfg复制到FTP根目录,供客户机下载
cp /root/ks.cfg /var/ftp/ks.cfg
# 2. 修改PXE启动菜单文件,添加ks参数
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0 # 设置为0,无需用户确认,自动启动
label auto
kernel vmlinuz
append initrd=initrd.img inst.ks=ftp://192.168.10.101/ks.cfg inst.repo=ftp://192.168.10.101/euler
4.4 步骤 3:验证无人值守安装
完成上述配置后,重启 PXE 客户机,客户机会自动完成以下操作:
- 获取 IP 地址并下载引导文件
- 自动下载
ks.cfg应答文件 - 根据
ks.cfg配置,自动完成系统安装、分区、软件包选择等操作 - 安装完成后自动重启,整个过程无需任何手动干预
五、PXE+Kickstart 装机优势总结
PXE 结合 Kickstart 的批量装机方案,在大规模 Linux 集群部署场景中具有三大核心优势:
- 规模化部署:支持同时为数十台甚至上百台服务器装机,大幅提升部署效率
- 全程自动化:从引导、安装到配置,全程无需手动干预,降低运维成本
- 无介质化安装:无需光盘、U 盘等物理介质,通过网络即可完成装机,适配无光驱服务器
六、常见问题与注意事项
- VMware 虚拟机测试报错:确保虚拟机内存≥2GB,禁用 VMware 自带 DHCP 功能
- 客户机无法获取 IP:检查 DHCP 服务是否正常运行,IP 地址池是否充足,网络是否互通
- 客户机无法下载引导文件:检查 TFTP 服务是否开启,
pxelinux.0等文件是否存在于 TFTP 根目录 - 无人值守安装不生效:检查
ks.cfg文件路径是否正确,启动菜单中是否添加inst.ks参数
结语
PXE+Kickstart 是大规模 Linux 集群部署的必备技术,它彻底解决了传统装机方式效率低、管理难的问题。掌握该技术,不仅能提升运维工作效率,还能为自动化运维、云平台部署打下坚实基础。希望本文的实战教程能帮助大家快速搭建 PXE 批量装机环境。
更多推荐




所有评论(0)