前言

在大规模 Linux 集群部署场景中,传统的光驱、U 盘装机方式效率极低,根本无法满足数十台甚至上百台服务器的快速交付需求。PXE(预启动执行环境)技术的出现,完美解决了这一痛点。它基于 C/S 架构,支持客户机通过网络下载引导镜像和安装文件,实现无介质化批量装机。再结合 Kickstart 工具,还能进一步实现无人值守自动安装,大幅提升部署效率。本文将以 OpenEuler 24.03 系统为例,详细讲解 PXE+Kickstart 的完整部署流程。

一、PXE 批量网络装机核心原理与前提条件

1.1 PXE 技术核心原理

PXE 技术工作在Client/Server 模式,其核心装机流程如下:

  1. PXE 客户机开机后,在 BIOS 中设置网络启动,向局域网发送 DHCP 请求
  2. DHCP 服务器为客户机分配 IP 地址,并告知 TFTP 服务器地址和 PXE 引导程序文件名
  3. 客户机从 TFTP 服务器下载引导程序pxelinux.0和启动菜单配置文件
  4. 客户机根据启动菜单,加载 Linux 内核和初始化镜像文件
  5. 客户机通过 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.0syslinux软件包提供,安装该软件包并复制引导程序到 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 服务器搭建后,就可以对客户机进行装机测试,具体步骤如下:

  1. 客户机设置:将客户机(裸机或虚拟机)的 BIOS 启动顺序设为 “NETWORK” 或 “LAN”。如果是 VMware 虚拟机,内存需至少 2GB,否则会报错。
  2. 自动装机流程:客户机开机后,会自动向 DHCP 服务器请求 IP 地址,然后从 TFTP 服务器下载pxelinux.0引导程序和启动菜单。按 Enter 键确认后,客户机会自动从 FTP 服务器下载安装文件,并进入图形化安装界面。
  3. 验证结果:当客户机成功进入系统语言选择界面时,说明 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 客户机,客户机会自动完成以下操作:

  1. 获取 IP 地址并下载引导文件
  2. 自动下载ks.cfg应答文件
  3. 根据ks.cfg配置,自动完成系统安装、分区、软件包选择等操作
  4. 安装完成后自动重启,整个过程无需任何手动干预

五、PXE+Kickstart 装机优势总结

PXE 结合 Kickstart 的批量装机方案,在大规模 Linux 集群部署场景中具有三大核心优势:

  1. 规模化部署:支持同时为数十台甚至上百台服务器装机,大幅提升部署效率
  2. 全程自动化:从引导、安装到配置,全程无需手动干预,降低运维成本
  3. 无介质化安装:无需光盘、U 盘等物理介质,通过网络即可完成装机,适配无光驱服务器

六、常见问题与注意事项

  1. VMware 虚拟机测试报错:确保虚拟机内存≥2GB,禁用 VMware 自带 DHCP 功能
  2. 客户机无法获取 IP:检查 DHCP 服务是否正常运行,IP 地址池是否充足,网络是否互通
  3. 客户机无法下载引导文件:检查 TFTP 服务是否开启,pxelinux.0等文件是否存在于 TFTP 根目录
  4. 无人值守安装不生效:检查ks.cfg文件路径是否正确,启动菜单中是否添加inst.ks参数

结语

PXE+Kickstart 是大规模 Linux 集群部署的必备技术,它彻底解决了传统装机方式效率低、管理难的问题。掌握该技术,不仅能提升运维工作效率,还能为自动化运维、云平台部署打下坚实基础。希望本文的实战教程能帮助大家快速搭建 PXE 批量装机环境。

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐