用 image-builder 构建 Fedora 45 镜像
Fedora 45 把 Atomic Desktops 的磁盘镜像构建切到 image-builder,同时 Anaconda 增加了面向 Atomic 的 WebUI(官方 ChangeSet:Build disk images for Atomic Desktops with image-builder、Anaconda WebUI Fedora Atomic)。
对大多数使用者,这意味着”自定义镜像”的入口从 kickstart 换成了 blueprint。下面是在 F45 上实测的用法。
先确认工具在不在
Section titled “先确认工具在不在”sudo dnf install image-builderimage-builder versionimage-builder: version: 87.0.0F45 上是 87.x,CLI 已经是 Go 重写后的形态——命令结构与老版 composer-cli 完全不同,别照抄旧教程。
能构建什么:list 与 describe
Section titled “能构建什么:list 与 describe”image-builder list | grep fedora-45image-builder describe --distro fedora-45 --arch x86_64 qcow2describe 的输出(原文):
@WARNING - the output format is not stable yet and may changedistro: fedora-45type: generic-qcow2arch: x86_64os_version: "45"bootmode: hybridpartition_type: gptdefault_filename: disk.qcow2几个字段值得记住:
| 字段 | 含义 | 什么时候关心 |
|---|---|---|
type | 实际镜像类型 generic-qcow2 | 填构建命令时用 qcow2,不是 generic-qcow2 |
bootmode | hybrid | UEFI 与 BIOS 都能引导 |
partition_type | gpt | 老 BIOS 机器上的兼容性 |
default_filename | disk.qcow2 | 批量构建时记得改名 |
blueprint:用 TOML 描述镜像
Section titled “blueprint:用 TOML 描述镜像”cat > f45-web.toml <<'EOF'name = "f45-web"description = "Fedora 45 minimal web server image"version = "0.1.0"
[[packages]]name = "nginx"version = "*"
[customizations]hostname = "f45-web"EOF三段的含义:
name/description/version:blueprint 的身份,version变了才算新版本;[[packages]]:要多装的包,version = "*"表示取仓库最新;[customizations]:主机名、用户、时区这类首次启动前的设置。
sudo mkdir -p /tmp/ib-outsudo image-builder build qcow2 \ --distro fedora-45 \ --arch x86_64 \ --blueprint f45-web.toml \ --output-dir /tmp/ib-out构建过程由 osbuild 执行,日志是按包下载的流水:
source/org.osbuild.librepo: Downloaded Packages/p/python3-jsonschema-specifications-2025.9.1-4.fc45.noarch.rpmsource/org.osbuild.librepo: Downloaded Packages/f/fedora-release-identity-basic-45-13.noarch.rpmsource/org.osbuild.librepo: Downloaded Packages/e/elfutils-libs-0.196-1.fc45.x86_64.rpm构建成功后 osbuild 会打印产物路径与校验值:
qcow2: f3f4c0cdde0b7914f4ff51690d1ebc2a38b8d403535ddf7211dd3e86395ed609
CheckpointsImage build successful: /tmp/ib-out/fedora-45-generic-qcow2-x86_64.qcow2产物落在 --output-dir:
ls -lh /tmp/ib-out/-rw-r--r--. 1 root root 941M fedora-45-generic-qcow2-x86_64.qcow2记住三件事:文件名由 distro/type/arch 拼成(不是 blueprint 的 name)、默认权限是 root 600 级(chown 后再交付)、校验值要留存(分发时让对方核对)。
与 kickstart 的关系
Section titled “与 kickstart 的关系”| kickstart | blueprint | |
|---|---|---|
| 描述对象 | 安装过程 | 镜像内容 |
| 执行时机 | 装机时 | 构建时 |
| 可复现性 | 依赖仓库当天状态 | 可锁定版本 |
| 产物 | 装好的系统 | 可分发的镜像文件 |
两者不是替代关系:kickstart 仍然用于常规安装,blueprint 用于预先造好一个镜像再分发。Atomic 走的是后者。
安装流程的变化
Section titled “安装流程的变化”F45 的 Anaconda 增加了面向 Atomic 的 WebUI。实际影响:
- Atomic 安装更像”选镜像 + 写盘 + 首次配置”,逐步脱离传统分区向导;
- 首次启动配置(Ignition / 蓝图)成为自动化入口,而不是装完再手工改;
- 自定义镜像的入口统一到 blueprint,团队里”构建”这件事只有一种描述方式。
- 你的构建脚本是否还依赖
composer-cli或旧 kickstart 拼镜像的路径; - 安装介质是否已换成新构建产物;
- 首次启动的配置方式是否与你的自动化对齐。
- Atomic 桌面与不可变系统 — 不可变模型与 rpm-ostree
- Fedora IoT 与边缘设备 — 同一套镜像模型的边缘形态
- Fedora 云镜像与实例 — 云上的镜像产物
- Fedora 45:变化、下载与升级入口 — 六项变化总览
- 官方:Fedora 45 ChangeSet