跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    用 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 上实测的用法。

    Terminal window
    sudo dnf install image-builder
    image-builder version
    image-builder:
    version: 87.0.0

    F45 上是 87.x,CLI 已经是 Go 重写后的形态——命令结构与老版 composer-cli 完全不同,别照抄旧教程。

    Terminal window
    image-builder list | grep fedora-45
    image-builder describe --distro fedora-45 --arch x86_64 qcow2

    describe 的输出(原文):

    @WARNING - the output format is not stable yet and may change
    distro: fedora-45
    type: generic-qcow2
    arch: x86_64
    os_version: "45"
    bootmode: hybrid
    partition_type: gpt
    default_filename: disk.qcow2

    几个字段值得记住:

    字段含义什么时候关心
    type实际镜像类型 generic-qcow2填构建命令时用 qcow2,不是 generic-qcow2
    bootmodehybridUEFI 与 BIOS 都能引导
    partition_typegpt老 BIOS 机器上的兼容性
    default_filenamedisk.qcow2批量构建时记得改名
    Terminal window
    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]:主机名、用户、时区这类首次启动前的设置。
    Terminal window
    sudo mkdir -p /tmp/ib-out
    sudo 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.rpm
    source/org.osbuild.librepo: Downloaded Packages/f/fedora-release-identity-basic-45-13.noarch.rpm
    source/org.osbuild.librepo: Downloaded Packages/e/elfutils-libs-0.196-1.fc45.x86_64.rpm

    构建成功后 osbuild 会打印产物路径与校验值:

    qcow2: f3f4c0cdde0b7914f4ff51690d1ebc2a38b8d403535ddf7211dd3e86395ed609
    Checkpoints
    Image build successful: /tmp/ib-out/fedora-45-generic-qcow2-x86_64.qcow2

    产物落在 --output-dir:

    Terminal window
    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 后再交付)、校验值要留存(分发时让对方核对)。

    kickstartblueprint
    描述对象安装过程镜像内容
    执行时机装机时构建时
    可复现性依赖仓库当天状态可锁定版本
    产物装好的系统可分发的镜像文件

    两者不是替代关系:kickstart 仍然用于常规安装,blueprint 用于预先造好一个镜像再分发。Atomic 走的是后者。

    F45 的 Anaconda 增加了面向 Atomic 的 WebUI。实际影响:

    • Atomic 安装更像”选镜像 + 写盘 + 首次配置”,逐步脱离传统分区向导;
    • 首次启动配置(Ignition / 蓝图)成为自动化入口,而不是装完再手工改;
    • 自定义镜像的入口统一到 blueprint,团队里”构建”这件事只有一种描述方式。
    1. 你的构建脚本是否还依赖 composer-cli 或旧 kickstart 拼镜像的路径;
    2. 安装介质是否已换成新构建产物;
    3. 首次启动的配置方式是否与你的自动化对齐。