🚗 Kickstart 完整详解模板
适用系统:RHEL8/RHEL9、CentOS Stream 8/9、Rocky Linux、AlmaLinux
文件后缀:ks.cfg,配合 PXE / 本地 U 盘自动安装
完整 ks.cfg 文件(每行附带超长详细说明)
# ====================== 1. 安装类型与语言时区全局配置 ======================
# install:代表全新安装;若写upgrade为系统升级,自动安装必须用install
install
# 系统安装源配置,两种方式任选其一,注释掉不用的
# 方式1:本地光盘/ISO源(U盘本地安装用)
# cdrom
# 方式2:HTTP网络yum源(PXE批量装机推荐,替换为你的镜像源地址)
url --url=http://192.168.1.100/centos9-stream/BaseOS/
# 系统语言,en_US.utf8英文,zh_CN.utf8中文,服务器推荐英文避免编码bug
lang en_US.UTF-8
# 系统时区,Asia/Shanghai东八区;--utc 硬件时钟使用UTC时间,服务器必加
timezone Asia/Shanghai --utc
# 键盘布局,us美式键盘,中文环境可加cn,多布局用逗号分隔
keyboard us
# 系统授权许可,RHEL必须写,CentOS/Rocky可保留
licence --accept
# 关闭图形化安装界面,全程文本自动安装,无人工交互
text
# 设置安装过程日志输出,--file保存到本地文件,--remote发送日志到远端服务器
logging --level=info
# ====================== 2. 网络配置(服务器必配,PXE装机核心) ======================
# network 配置第一块网卡eth0/ens33
# --bootproto:dhcp自动获取IP | static静态IP
# --device:网卡设备名,ens33为VMware默认网卡,ens160是ESXi默认
# --onboot=on 开机自动启用网卡;--ipv6=disable 关闭IPv6减少故障
# static模式额外参数:ip、netmask、gateway、nameserver
network --device=ens33 --bootproto=dhcp --onboot=on --ipv6=disable
# 静态IP完整示例(替换上面network行,二选一)
# network --device=ens33 --bootproto=static --ip=192.168.1.10 --netmask=255.255.255.0 --gateway=192.168.1.1 --nameserver=223.5.5.5 --onboot=on --ipv6=disable
# 设置主机名,安装完成后写入/etc/hostname
hostname kicktest-server01
# ====================== 3. 存储磁盘分区(重点详细,单磁盘全盘清空方案) ======================
# clearpart:清空磁盘分区,自动装机必备
# --all:清空本机所有磁盘所有分区;--drives=sda 指定只清空sda盘
# --initlabel:清空后初始化磁盘标签,MBR(BIOS) / GPT(UEFI)自动识别
# --linux:仅删除Linux分区,保留Windows,多系统共存用
clearpart --all --initlabel
# 初始化磁盘标签,UEFI环境强制生成GPT分区表,BIOS可选mbr
zerombr
# 磁盘分区方案,分 /boot/efi(UEFI)、/boot、swap、根分区/
# UEFI分区:必须vfat格式,大小最小600M,推荐1G,挂载/boot/efi
part /boot/efi --fstype=vfat --size=1024
# /boot 系统启动分区 xfs格式,存放内核,1G足够
part /boot --fstype=xfs --size=1024
# swap交换分区,内存小于16G建议和内存同等大小,大于16G给4G即可
part swap --size=4096
# 根分区 / 所有剩余空间全部给根目录,--grow 参数代表占用磁盘剩余全部容量
part / --fstype=xfs --size=10240 --grow
# 若需要LVM逻辑卷分区方案(企业生产常用,替换上面part分区段)
# # 创建物理卷
# volgroup vg01 /dev/sda3
# # 创建逻辑卷根分区
# logvol / --vgname=vg01 --size=20480 --name=lvroot --fstype=xfs
# # 创建swap逻辑卷
# logvol swap --vgname=vg01 --size=4096 --name=lvswap
# ====================== 4. 系统密码、用户、root权限配置 ======================
# root管理员密码,两种写法
# 明文:rootpw 123456 仅测试用,禁止生产环境
# --iscrypted 加密密码,使用openssl passwd -6 生成SHA512加密字符串(生产推荐)
rootpw --iscrypted $6$xxxxxx$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 新建普通用户,参数详解:
# --name 用户名;--groups 附属组wheel代表拥有sudo权限;--password加密密码
# --shell 指定登录shell /bin/bash;--homedir 家目录
user --name=admin --groups=wheel --shell=/bin/bash --homedir=/home/admin --password=$6$xxxxxx$xxxxxxx
# 允许root账号ssh远程登录(安全规范建议关闭,关闭去掉此参数)
sshkey --username=root
# 防火墙配置:--enabled开启防火墙;--disabled关闭;--service开放端口
firewall --enabled --service=ssh,http,https
# ====================== 5. 安全与SELinux ======================
# SELinux模式:enforcing强制开启(生产推荐)、permissive告警不拦截、disabled彻底关闭
selinux --enforcing
# ====================== 6. 引导程序、开机配置 ======================
# bootloader 系统引导程序grub2
# --location=mbr BIOS模式写入主引导;UEFI自动写入ESP分区无需修改
# --append 内核启动参数,net.ifnames=0关闭网卡命名,网卡变回eth0格式
bootloader --location=mbr --append="net.ifnames=0 biosdevname=0"
# 关闭开机图形界面,默认进入字符终端3级别
runlevel 3
# 关闭kdump崩溃转储服务,服务器资源紧张可关闭,生产排查故障建议开启
# kdump --enable --reserve-mb=256
kdump --disable
# ====================== 7. 软件包安装选择(核心:%packages段) ======================
# %packages 定义需要安装的软件组/单独软件,@代表软件组,-代表排除不装
%packages
# 最小化服务器安装组,仅基础组件,无图形(生产首选)
@Minimal
# 开启网络工具组,包含ifconfig、netstat、traceroute等
@NetworkTools
# 开发工具组,编译安装软件必备(不需要可删除)
@Development Tools
# 系统基础工具
vim-enhanced
wget
unzip
zip
telnet
# 排除不需要的软件,减少安装体积
-*-gnome
-*-kde
-xfirefox
# 排除弱密码检测、图形相关包
-plymouth
%end
# ====================== 8. 安装后自动执行脚本 %post(装机自动化核心) ======================
# %post --nochroot:安装环境执行;不加nochroot代表进入新系统后执行
# --log=/var/log/ks-post.log 将脚本执行日志写入文件,方便排错
%post --log=/var/log/ks-post-install.log
# 1. 关闭SELinux永久关闭(可选,上面selinux参数已控制,此处二次修改)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 2. 关闭防火墙(可选,根据业务需求)
# systemctl disable --now firewalld
# 3. 设置时间同步chrony
cat > /etc/chrony.conf <<EOF
server ntp.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.1.0/24
EOF
systemctl enable --now chronyd
# 4. 优化ssh配置,禁止密码登录(测试环境注释)
# sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
# systemctl restart sshd
# 5. 写入开机提示
echo "Kickstart自动装机完成,服务器IP查看:ip a" >> /etc/motd
# 6. 清除安装缓存,减小系统占用
dnf clean all
%end
# ====================== 9. 安装完成动作 ======================
# reboot:安装完成自动重启
# halt:安装完成停机
# poweroff:安装完成断电
reboot
分模块超详细参数说明(逐个字段拆解)
一、安装基础段(install 开头)
-
install
作用:声明本次执行全新操作系统安装,upgrade代表升级现有系统,自动化装机必须使用install,升级模式无法分区清空。 -
url --url=源地址-
HTTP/HTTPS/FTP 网络安装源,企业 PXE 批量装机主流方式
-
本地 ISO 使用
cdrom替代,读取本地光盘镜像,适合离线单机安装
-
-
lang en_US.UTF-8
系统全局语言,服务器强烈推荐英文中文:zh_CN.UTF-8:中文,控制台中文会出现方块乱码,排查日志不友好
-
timezone Asia/Shanghai --utc-
Asia/Shanghai:东八区北京时间,不能写 CST 会冲突 -
--utc:主板硬件时钟使用 UTC 标准时间,多服务器集群时间同步必加
-
-
text
强制文本模式安装;去掉该参数默认图形 GUI 安装,无人值守必须文本。
二、网络 network 参数全解析
network --device=ens33 --bootproto=dhcp --onboot=on --ipv6=disable
-
--device:指定网卡设备名称,虚拟机 ens33/ens160,物理机 eth0 -
--bootproto=dhcp:自动获取 IP;static静态固定 IP,必须搭配 ip/netmask/gateway -
--ip=192.168.1.10:静态 IP 地址 -
--netmask=255.255.255.0:子网掩码 -
--gateway=192.168.1.1:网关 -
--nameserver=223.5.5.5:DNS 服务器,多 DNS 逗号分隔 -
--onboot=on:开机自启网卡,off 则开机禁用网卡 -
--ipv6=disable:关闭 IPv6 协议,内网服务器一般不需要 IPv6
三、磁盘分区核心参数(最容易出错模块)
-
clearpart --all --initlabel-
--all:清空本机所有硬盘全部分区,全新装机必选 -
--drives=sda:仅清空指定硬盘,多磁盘服务器用,例clearpart --drives=sda,sdb -
--initlabel:磁盘清空后重建分区表,UEFI 生成 GPT,BIOS 生成 MBR -
--linux:只删除 Linux 分区,保留 Windows,双系统专用
-
-
zerombr
清空磁盘 MBR 引导残留,防止旧系统引导干扰新系统安装。 -
part 分区命令通用参数-
--fstype=xfs/vfat/ext4:文件系统类型,RHEL8 + 默认 xfs;EFI 分区必须 vfat -
--size=数字:分区固定大小,单位 MB -
--grow:占用磁盘剩余所有空闲空间,仅根分区使用 -
--ondisk=sda:指定分区创建在哪块硬盘
-
-
LVM 逻辑卷参数(企业生产)
-
volgroup vg名 /dev/sda3:创建卷组,绑定物理分区 -
logvol 挂载点 --vgname=卷组名 --size=大小 --name=逻辑卷名:创建逻辑卷
-
四、用户与密码配置
-
rootpw --iscrypted 加密字符串-
--iscrypted:密码为 SHA512 加密密文,生产环境强制使用 -
生成加密密码命令:
openssl passwd -6,输入密码直接复制密文 -
无 --iscrypted 为明文密码,仅本地测试,严禁线上使用
-
-
user --name=xxx创建普通用户-
--groups=wheel:加入 wheel 组,拥有 sudo 管理员权限 -
--shell=/bin/bash:可交互登录 shell,默认 /sbin/nologin 无法登录 -
--homedir=/home/admin用户家目录路径
-
-
firewall --enabled --service=ssh-
--enabled开启 firewalld 防火墙;--disabled关闭 -
--service=ssh,http放行对应服务端口,逗号分隔多服务
-
五、引导 bootloader 参数
bootloader --location=mbr --append="net.ifnames=0 biosdevname=0"
-
--location=mbrBIOS 机器,引导写入磁盘主引导记录 -
UEFI 环境无需修改,自动写入 /boot/efi 分区
-
--append内核启动参数:net.ifnames=0关闭 systemd 网卡命名,网卡变回 eth0
六、% packages 软件安装段规则
-
@软件组名:批量安装一组软件,系统内置分组-
@Minimal最小化服务器(推荐) -
@Server with GUI带图形桌面服务器 -
@Development Tools编译开发工具
-
-
直接写包名:单独安装单个软件,如 vim-enhanced wget
-
-包名:减号代表排除该软件,不进行安装,精简系统体积
七、% post 装机后脚本段(自动化核心)
执行时机:系统文件全部复制完成,重启之前执行
-
--log=/xxx.log:将脚本所有输出写入日志,排错必备 -
--nochroot:在安装临时环境执行,不加参数则进入新系统根环境执行
常用自动化场景:配置 yum 源、时间同步、ssh 加固、初始化业务环境、自动推送脚本、修改系统配置文件
八、收尾动作指令
-
reboot:安装完成自动重启,PXE 批量装机最常用 -
poweroff:安装完成自动断电,机房批量上架使用 -
halt:安装完成停机,需手动开机
配套实用操作命令
- 校验 ks.cfg 语法是否错误(系统自带工具)
ksvalidator ks.cfg
- 生成 root 加密密码
openssl passwd -6
- 测试 Kickstart 本地安装(虚拟机挂载 ISO 测试)
在系统启动菜单添加内核参数:inst.ks=http://192.168.1.100/ks.cfg
本地文件:inst.ks=hd:sda1:/ks.cfg
使用注意事项
-
UEFI 启动必须存在
/boot/efivfat 分区,缺少会安装失败 -
静态网络配置时,网关、DNS、IP 网段必须匹配,否则安装源无法访问
-
生产环境禁止明文 root 密码,必须使用
--iscrypted加密 -
% post 脚本中所有命令使用绝对路径,安装环境 PATH 不完整
-
最小化安装不带 ifconfig、netstat,需要手动安装 @NetworkTools 软件组