kickstart通过part和bootloader指令实现全自动磁盘分区,需显式指定目标磁盘(如--ondisk=sda)、清除策略(如--clearpart=all --initlabel)、分区布局(含lvm/raid)及uefi兼容配置(gpt标签与/boot/efi分区)。

在无交互的PXE网络装机环境中,Kickstart 通过 part(或 partition)和 bootloader 指令实现全自动磁盘分区,关键在于明确指定目标磁盘、各分区挂载点、大小及格式化行为,避免依赖交互式提示或探测逻辑。
明确指定磁盘与清除策略
必须显式声明安装目标磁盘(如 --disklabel=msdos 或 --disklabel=gpt),并用 --onpart 或 --useexisting 控制复用行为;若需清空重分区,使用 --zerombr 和 --clearpart=ALL --initlabel 组合,确保从干净状态开始:
-
--clearpart=ALL --initlabel:清空所有磁盘并初始化新标签(MBR/GPT) -
--clearpart=ALL --drives=sda:仅清空指定磁盘(如 sda),保留其他磁盘数据 -
--zerombr:强制写入空白 MBR(仅对 MBR 有效,GPT 环境下无需)
定义标准分区布局(含 LVM/RAID 示例)
使用 part 指令逐行声明分区,顺序即创建顺序;--fstype 显式指定文件系统类型,--size 或 --grow 控制容量,--encrypted 可启用 LUKS 加密:
part /boot --fstype=xfs --size=1024 --ondisk=sda-
part pv.01 --size=10240 --ondisk=sda(LVM 物理卷) volgroup vg0 --pesize=4096 pv.01logvol / --fstype=xfs --size=8192 --grow --maxsize=32768 --name=lv_root --vgname=vg0logvol swap --fstype=swap --size=2048 --name=lv_swap --vgname=vg0
若需 RAID 分区,先用 raid 指令定义阵列(如 raid /boot --device=md0 --fstype=xfs --level=1 ...),再用 part raid. 引用成员分区。
适配不同硬件规格的弹性写法
避免硬编码固定大小,改用相对策略提升兼容性:
- 根分区用
--grow --maxsize=30720,留出扩展空间 - 对小容量磁盘(如 40GB SSD),设
--size=1024 --recommended让 Anaconda 自动调整最小合理值 - 使用
--noformat --onpart=/dev/sda1复用已有分区(需确保已存在且格式正确) - 多磁盘环境用
--ondisk=sda显式绑定,防止自动选择错误盘
验证与调试要点
Kickstart 分区脚本执行无声,故障常表现为安装卡在“格式化”阶段或报错 “No usable disks found”。建议:
- 在 KS 文件开头添加
logging --level=debug,配合ks.cfg中text模式查看实时日志 - 用
lsblk或fdisk -l预检目标机器磁盘命名(sda/vda/nvme0n1),避免--ondisk指定错误 - 测试时临时加入
bootloader --location=mbr --driveorder=sda,确认引导写入位置 - 若使用 UEFI,务必搭配
part /boot/efi --fstype=efi --size=512 --asprimary和 GPT 标签











