目录
一、PXE与Kickstart协同原理
1.1 核心流程
-
PXE:负责网络引导客户端,加载内核和初始化文件。
-
Kickstart:通过预定义的
ks.cfg
应答文件,自动化完成系统安装配置(分区、用户、软件包等)。 -
整体流程:
二、环境搭建步骤
2.1 前置条件
-
已完成PXE基础环境搭建(DHCP、TFTP、HTTP服务)。
-
准备目标系统的ISO镜像(如CentOS 7)。
2.2 配置Kickstart应答文件
步骤1:生成ks.cfg
文件
-
方法1:手动编写
# Kickstart配置文件示例(CentOS 7)
# 版本声明
version=DEVEL
# 系统安装源
url --url=http://192.168.1.10/centos
# 系统语言
lang en_US.UTF-8
# 键盘布局
keyboard us
# 时区
timezone Asia/Shanghai
# 根密码
rootpw --plaintext your_password
# 分区方案
clearpart --all --initlabel
autopart --type=lvm
# 安装模式
graphical
# 软件包选择
%packages
@^minimal
vim
%end
# 安装后脚本
%post
echo "Hello, Auto-Install!" > /etc/motd
%end
- 方法2:通过已有系统生成
在已安装的系统上执行:
yum install pykickstart -y
ksvalidator /root/anaconda-ks.cfg # 验证文件有效性
步骤2:部署ks.cfg
文件
将文件放置到HTTP服务目录:
cp ks.cfg /var/www/html/
chmod 644 /var/www/html/ks.cfg
2.3 修改PXE引导配置
编辑TFTP服务器中的引导菜单文件(/var/lib/tftpboot/pxelinux.cfg/default
):
LABEL auto_install
MENU LABEL Auto Install CentOS 7 via Kickstart
KERNEL vmlinuz
APPEND initrd=initrd.img ks=http://192.168.1.10/ks.cfg #替换为自己的ip
2.4 启动客户端测试
-
客户端开机选择PXE启动,自动执行无人值守安装。
-
观察安装过程是否跳过手动交互步骤。
三、常见问题与解决
3.1 Kickstart文件未生效
-
现象:安装过程仍提示手动配置。
-
排查:
-
检查
ks.cfg
路径是否正确(客户端可访问性测试:curl http://服务器IP/ks.cfg
)。 -
验证文件语法:
ksvalidator ks.cfg
。
-
3.2 分区失败
-
现象:安装时报错
Partitioning failed: no space left on device
。 -
解决:
-
在
ks.cfg
中明确分区规则:
-
part /boot --fstype=ext4 --size=1024
part swap --size=4096
part / --fstype=ext4 --grow --size=1
3.3 软件包安装错误
-
现象:安装时提示
Package X not found
。 -
解决:
-
确认镜像源中是否存在该软件包。
-
在
%packages
段中指定正确的包组名称(如@Development Tools
)。
-
四、优化与进阶
4.1 多系统支持
-
在
pxelinux.cfg/default
中定义多个启动项,指向不同的Kickstart文件:LABEL centos7 MENU LABEL Install CentOS 7 KERNEL centos7/vmlinuz APPEND initrd=centos7/initrd.img ks=http://192.168.1.10/ks_centos7.cfg LABEL ubuntu2004 MENU LABEL Install Ubuntu 20.04 KERNEL ubuntu2004/linux APPEND initrd=ubuntu2004/initrd.gz ks=http://192.168.1.10/ks_ubuntu.cfg
4.2 动态生成Kickstart
-
结合Web服务(如Flask)动态生成
ks.cfg
,实现按需定制化安装。
五、总结
5.1 核心价值
-
效率飞跃:批量部署100台服务器仅需启动PXE,后续全程自动化。
-
零接触安装:适合IDC机房、云环境等无法物理介入的场景。
5.2 避坑经验
-
严格验证配置:通过
ksvalidator
和虚拟机测试确保应答文件正确。 -
日志监控:关注
/var/log/anaconda/journal.log
定位安装错误。
动手实践Tips:
-
首次部署建议在虚拟机中验证。
-
使用
virt-manager
或VirtualBox
模拟多客户端场景。
立即体验“一杯咖啡的时间装好100台服务器”的高效运维!
(注:生产环境建议结合VLAN隔离PXE网络,避免广播风暴!)