Building Fedora 45 images with image-builder
Fedora 45 switches Atomic Desktop disk image builds to image-builder, and Anaconda gains an Atomic-oriented WebUI (official ChangeSet: Build disk images for Atomic Desktops with image-builder, Anaconda WebUI Fedora Atomic).
For most people this means the entry point for custom images moved from kickstart to blueprints. Here is the usage we measured on F45.
Confirm the tool is present
Section titled “Confirm the tool is present”sudo dnf install image-builderimage-builder versionimage-builder: version: 87.0.0F45 ships 87.x, whose CLI is the Go rewrite — the command structure is nothing like the older composer-cli, so do not copy old tutorials.
What can be built: list and describe
Section titled “What can be built: list and describe”image-builder list | grep fedora-45image-builder describe --distro fedora-45 --arch x86_64 qcow2describe prints (verbatim):
@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.qcow2Fields worth remembering:
| Field | Meaning | When it matters |
|---|---|---|
type | the real image type, generic-qcow2 | pass qcow2 to the build command, not generic-qcow2 |
bootmode | hybrid | boots both UEFI and BIOS |
partition_type | gpt | compatibility on older BIOS machines |
default_filename | disk.qcow2 | rename when building several images |
Blueprint: describe the image in TOML
Section titled “Blueprint: describe the image in 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"EOFThe three parts:
name/description/version: the blueprint’s identity; only aversionbump makes it a new revision;[[packages]]: extra packages,version = "*"takes the newest in the repositories;[customizations]: hostname, users, timezone — settings applied before first boot.
Building
Section titled “Building”sudo mkdir -p /tmp/ib-outsudo image-builder build qcow2 \ --distro fedora-45 \ --arch x86_64 \ --blueprint f45-web.toml \ --output-dir /tmp/ib-outosbuild runs the build and logs per-package downloads:
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.rpmOn success osbuild prints the artifact path and checksum:
qcow2: f3f4c0cdde0b7914f4ff51690d1ebc2a38b8d403535ddf7211dd3e86395ed609
CheckpointsImage build successful: /tmp/ib-out/fedora-45-generic-qcow2-x86_64.qcow2The artifact lands in --output-dir:
ls -lh /tmp/ib-out/-rw-r--r--. 1 root root 941M fedora-45-generic-qcow2-x86_64.qcow2Three things to remember: the filename is built from distro/type/arch (not the blueprint name), it is owned by root with restrictive permissions (chown before distributing), and keep the checksum for recipients to verify.
How it relates to kickstart
Section titled “How it relates to kickstart”| kickstart | blueprint | |
|---|---|---|
| Describes | the installation process | the image contents |
| Runs | at install time | at build time |
| Reproducibility | depends on the repos that day | versions can be pinned |
| Output | an installed system | a distributable image file |
They are not replacements: kickstart still drives ordinary installs, blueprints pre-build an image for distribution. Atomic takes the second route.
How the install flow changes
Section titled “How the install flow changes”F45’s Anaconda adds an Atomic-oriented WebUI. Practical effects:
- Installing Atomic looks more like “pick an image, write it, configure on first boot”, moving away from the classic partitioning wizard;
- First-boot configuration (Ignition / blueprints) becomes the automation entry point instead of post-install hand edits;
- Custom images now have one entry point, the blueprint, so “building” has a single description across a team.
What to confirm
Section titled “What to confirm”- Whether your build scripts still depend on
composer-clior the old kickstart-assembly paths; - Whether your install media now comes from the new build outputs;
- Whether first-boot configuration matches your automation.
Related pages
Section titled “Related pages”- Atomic desktops and immutable systems — the immutable model and rpm-ostree
- Fedora IoT and edge devices — the same image model at the edge
- Fedora cloud images and instances — image artifacts in the cloud
- Fedora 45: changes, download and upgrade — the six changes at a glance
- Official: Fedora 45 ChangeSet