当前位置:首页>Linux>Linux 自动化装机:PXE 批量部署 + Kickstart 无人值守安装实战

Linux 自动化装机:PXE 批量部署 + Kickstart 无人值守安装实战

  • 2026-10-11 08:31:05
Linux 自动化装机:PXE 批量部署 + Kickstart 无人值守安装实战

技术弄巷

读完仅需

5
分钟

记得星标公众号

前言

在机房运维、虚拟化平台、企业批量装机场景中,PXE 网络引导装机是最高效的标准化部署方案。无需U盘、无需光驱,客户端通过网卡引导,自动获取IP、加载内核、读取安装源,配合 Kickstart 自动应答文件,可实现百台服务器同时无人值守安装系统。

本文从 PXE 组件原理、CentOS 7.6/CentOS 6.6 双版本部署、FTP 安装源、TFTP 引导、DHCP 配置到 Kickstart 全自动安装,一站式完整讲解,跟着做即可搭建企业级批量装机平台。

一、PXE 核心组件介绍

PXE(Preboot Execution Environment)预启动执行环境,依赖四大核心服务协同工作:

  1. FTP/NFS/HTTP提供系统安装镜像与 Kickstart 应答文件(本文用 FTP)

  2. DHCP 服务分配 IP 地址,并告知客户端 TFTP 服务器地址

  3. TFTP 服务提供内核(vmlinuz)、初始化镜像(initrd.img)、引导菜单

  4. Syslinux提供引导程序 pxelinux.0,实现网卡启动引导


二、PXE 服务部署(CentOS 7.6 安装源)

1. 环境准备(扩展根分区)

pvcreate /dev/sdb
vgextend centos /dev/sdb
lvextend -L +50G /dev/centos/root
xfs_growfs /dev/centos/root

2. 安装依赖软件

yum install -y vsftpd dhcp tftp-server xinetd syslinux

3. 配置 FTP 安装源

mkdir /var/ftp/centos7.6
mount /dev/sr0 /mnt
cp -r /mnt/* /var/ftp/centos7.6/ &

systemctl start vsftpd
systemctl enable vsftpd

4. 配置 TFTP 引导服务

# 拷贝内核与镜像
cp /mnt/isolinux/* /var/lib/tftpboot/
mkdir /var/lib/tftpboot/centos7.6
mv /var/lib/tftpboot/vmlinuz /var/lib/tftpboot/initrd.img /var/lib/tftpboot/centos7.6/

# 拷贝引导文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

# 配置引导菜单
mkdir /var/lib/tftpboot/pxelinux.cfg
mv /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

编辑菜单 default

label centos76
  menu label Install CentOS7.6
  kernel centos7.6/vmlinuz
  append initrd=centos7.6/initrd.img inst.stage2=ftp://192.168.140.10/centos7.6 inst.repo=ftp://192.168.140.10/centos7.6

启动 TFTP

vim /etc/xinetd.d/tftp
# disable = no

systemctl restart xinetd
systemctl enable xinetd

5. 配置 DHCP 服务

vim /etc/dhcp/dhcpd.conf
subnet 192.168.140.0 netmask 255.255.255.0 {
    range 192.168.140.100 192.168.140.200;
    option routers 192.168.140.2;
    option domain-name-servers 114.114.114.114,223.5.5.5;
    next-server 192.168.140.10;
    filename "pxelinux.0";
}
systemctl start dhcpd
systemctl enable dhcpd

6. 测试要求

客户端内存 ≥ 2GB,网卡启动 PXE 引导


三、添加 CentOS 6.6 安装源

1. 配置 FTP 安装源

mount /dev/sr0 /mnt
mkdir /var/ftp/centos6.6
cp -r /mnt/* /var/ftp/centos6.6

2. 配置 TFTP 内核与镜像

mkdir /var/lib/tftpboot/centos6.6
cp /mnt/isolinux/vmlinuz /mnt/isolinux/initrd.img /var/lib/tftpboot/centos6.6

3. 添加菜单

vim /var/lib/tftpboot/pxelinux.cfg/default
label centos66
  menu label Install CentOS6.6
  kernel centos6.6/vmlinuz
  append initrd=centos6.6/initrd.img

四、Kickstart 无人值守自动安装

1. Kickstart 作用

自动应答安装过程:分区、密码、软件、网络、配置等,实现全自动装机。

2. 配置 KS 文件并共享

cp centos76_ks.cfg /var/ftp/

3. 菜单中指定 KS 路径

label centos76
  menu label Install CentOS7.6 Auto
  kernel centos7.6/vmlinuz
  append initrd=centos7.6/initrd.img inst.stage2=ftp://192.168.140.10/centos7.6 inst.repo=ftp://192.168.140.10/centos7.6 ks=ftp://192.168.140.10/centos76_ks.cfg

4. CentOS 7.6 KS 参考(直接可用)

#platform=x86, AMD64, or Intel EM64T
install
keyboard 'us'
rootpw --iscrypted $1$pHhwGQlp$FnSejX6/.MBUrHVJlIUTb/
lang en_US
auth --useshadow --passalgo=sha512
text
firstboot --disable
selinux --disabled
firewall --disabled
network --bootproto=dhcp --device=ens33
reboot
timezone Asia/Shanghai
url --url="ftp://192.168.140.10/centos7.6"
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --size=500
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1

%packages
@core
vim-enhanced
net-tools
psmisc
lftp
wget
rsync
ntpdate
bash-completion
%end

%post
sed -ri '/^#Port/c \Port 33333' /etc/ssh/sshd_config
systemctl restart sshd
%end

5. CentOS 6.6 KS 参考

#platform=x86, AMD64, or Intel EM64T
install
keyboard 'us'
rootpw --iscrypted $1$pHhwGQlp$FnSejX6/.MBUrHVJlIUTb/
lang en_US
auth --useshadow --passalgo=sha512
text
firstboot --disable
selinux --disabled
firewall --disabled
network --bootproto=dhcp --device=eth0
reboot
timezone Asia/Shanghai
url --url="ftp://192.168.140.10/centos6.6"
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=500
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1

%packages
@core
vim-enhanced
net-tools
psmisc
lftp
wget
rsync
ntpdate
%end

%post
sed -ri '/^#Port/c \Port 33333' /etc/ssh/sshd_config
service sshd restart
%end

五、报错说明(invalid link)

你在访问以下路径时出现 invalid link错误:

  • ftp://192.168.140.10/centos7.6
  • ftp://192.168.140.10/centos76_ks.cfg
  • ftp://192.168.140.10/centos6.6

原因:

  1. FTP 路径不存在或权限异常
  2. Kickstart 文件路径错误
  3. 菜单中 inst.repo/ ks路径写错
  4. vsftpd 匿名用户无权限访问

解决:

  • 检查 /var/ftp/下目录是否存在
  • 检查文件权限:chmod 644 /var/ftp/*.cfg
  • 检查菜单中 FTP 地址是否正确
  • 确保 anonymous_enable=YES

核心要点总结

  1. PXE 四大核心:DHCP → TFTP → FTP → Syslinux。
  2. pxelinux.0
    是网卡引导的核心文件。
  3. 菜单中 kernel与 initrd必须使用 TFTP 相对路径。
  4. inst.stage2
    和 inst.repo指向 FTP 安装源。
  5. Kickstart 实现无人值守分区、密码、软件、配置自动化。
  6. CentOS 7 与 CentOS 6 可共存同一个 PXE 服务器。
  7. 客户端报错 invalid link多为 FTP 路径/权限/配置错误。

结尾互动

PXE + Kickstart 是运维批量装机、标准化交付、机房自动化的必备技能,一次配置,终身受益。

如果这篇超详细实战教程对你的工作有帮助,欢迎点赞、在看、转发给更多运维同行!

关注我,持续更新 Linux 自动化部署、PXE/Kickstart、Shell 脚本、服务架构等硬核干货,一起做高效运维人!

最新文章

随机文章