用 Kickstart 自动安装 CentOS Stream
This content is not available in your language yet.
适用:CentOS Stream 9 / 10 · 核对日:2026-11-01 · 官方依据:pykickstart 上游文档、安装器 Anaconda 的 Kickstart 文档(安装器内置文档 inst.doc)。
Kickstart 把安装问答变成一份应答文件,装机零交互。Stream 场景下最常见的坑不在 ks 语法本身,而在校验工具的版本:Stream 9 自带的校验器不认识 Stream 10 的新语法。本页流程的校验环节在 Stream 9 / 10 容器实测;ks 文件的真机安装执行与 PXE 派发属装机阶段,见文末说明。
- 一台能跑
dnf的机器(校验器不必装在目标机上); - 想清楚装机策略:磁盘怎么分(本页样例用
autopartLVM)、root 口令锁不锁(样例--lock,装完用密钥登录,见 SSH 密钥登录); - 回退点:ks 只影响安装阶段,不存在「装坏了回滚」——错了重装。先校验后装机就是回退点。
一份最小的 Stream ks
Section titled “一份最小的 Stream ks”以 Stream 9 网络安装为例(#version=RHEL9 声明语法版本):
#version=RHEL9textlang zh_CN.UTF-8keyboard ustimezone Asia/Shanghai --utcrootpw --locknetwork --bootproto=dhcp --activateurl --url=https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/clearpart --all --initlabelautopart --type=lvmreboot%packages@core%endurl --url= 指向发布线的 BaseOS os/ 目录:…/9-stream/BaseOS/x86_64/os/。装 Stream 10 就换成 10-stream 与 #version=RHEL10。国内镜像把域名与路径前缀换成同结构地址即可(如 https://mirrors.tuna.tsinghua.edu.cn/centos-stream/9-stream/BaseOS/x86_64/os/)。同一地址也会填在图形安装器的「安装源」对话框里(boot ISO 安装时必填,见安装 CentOS Stream的摘要页说明):

装机前:用 ksvalidator 校验
Section titled “装机前:用 ksvalidator 校验”$ sudo dnf install pykickstart$ ksvalidator -v RHEL9 ks.cfg校验通过时无输出(退出码 0)。故意写一个不存在的命令再校验:
$ echo "fakecmd --foo" >> ks.cfg$ ksvalidator -v RHEL9 ks.cfg预期输出(实测摘录):
The following problem occurred on line 16 of the kickstart file:语法版本要跟目标系统的安装器走。看校验器支持哪些版本:
$ ksvalidator --listversions实测对比:
| 容器 | pykickstart | 支持到 |
|---|---|---|
| Stream 9 | 3.32.x | …RHEL9(无 RHEL10) |
| Stream 10 | 3.52.13 | …RHEL9 RHEL10 |
用 S9 的校验器校验 RHEL10 语法的 ks 会直接报 The version RHEL10 is not supported by pykickstart。给 Stream 10 装机写 ks,请在 Stream 10 环境(或容器)里校验:
$ podman run --rm -v "$PWD:/w:Z" quay.io/centos/centos:stream10 \ bash -c "dnf -qy install pykickstart >/dev/null && ksvalidator -v RHEL10 /w/ks.cfg"把 ks 交给安装器
Section titled “把 ks 交给安装器”引导安装器时加内核参数 inst.ks=。物理机:在 ISO 引导菜单选中安装项按 e(UEFI)或 Tab(BIOS)编辑启动项,在 linux 行末尾追加:
inst.ks=https://your-server/ks.cfg inst.ks.sendmacks 文件放 HTTP(S) 服务器最省事(inst.ks.sendmac 会把网卡 MAC 附在请求头里,方便服务端按机器下发不同 ks)。ks 放在本地盘/U 盘的写法是 inst.ks=hd:LABEL=<卷标>:/ks.cfg。装机后的动作(首启核对、仓库检查)见装完 10 分钟。
安装阶段的错误以重装收场:改 ks → 再校验 → 再装。没有装完后的「回滚」;真正要防的是 ks 里 clearpart --all 清错盘——目标机有多块盘时用 ignoredisk --only-use=sda 明确限定目标盘,不要让 clearpart 自由发挥。
| 现象 | 原因 | 处理 |
|---|---|---|
| 安装器停在交互问答 | ks 某项没答到(如未配 network) | 看 inst.cmdline 模式的报错行,或先跑交互安装记录答案 |
failed to fetch kickstart 循环 | initramfs 阶段无网络 | 内核参数加 ip=…(七字段语法见上文警示框) |
| 校验器报 version 不支持 | 工具版本旧于目标语法 | 换目标版本的容器校验(见上) |
| url 阶段失败 | 源地址 404 或网络不通 | 先在浏览器/curl 确认 BaseOS os 目录可达 |
| 卡在「Setting up installation source」 | ks 里失效的 addon repo 行阻塞源设置线程 | 修掉失效 repo 行后重启安装;文本界面的 r 刷新救不回挂起的线程 |
| clearpart 清了数据盘 | 未限定目标磁盘 | 加 ignoredisk --only-use=,不可逆操作前置到「开始前」 |
离线环境的边界(2026-11-01 实测):boot ISO 的安装环境内置 extras-common 仓库(metalink 指向 mirrors.centos.org),完全离线时它的失败会清空整个仓库集(packaging.log 出现 The repositories are set to: []),导致 ks 安装中止回退图形界面。用 boot ISO + 局域网镜像源安装时,至少要保证安装环境能解析并访问 mirrors.centos.org,或改用自带完整仓库树的 DVD ISO。
- 制作 USB 启动盘 — 引导介质与校验
- 安装 CentOS Stream — 交互安装流程与装前决策
- 仓库与滚动内容 —
url指向的 BaseOS 目录结构 - SSH 密钥登录 — ks 里锁 root 后的登录方案
- 官方:CentOS Stream 标准安装手册