How does Fedora build disk images?
Posted on Sunday 20 July 2025 in Computers.
Fedora has lots of tools for building disk images in ISO format; for example imagefactory, livecd-tools, lorax, kiwi-cli and image-builder are all currently packaged. I plan to build an image to follow the YubiKey guide and I want to use a popular and maintained tool; ideally I'll use the tool Fedora uses for release artifacts. There is some confusion over which is used for the official Fedora Workstation Live ISO images (“ISOs”) today.
TLDR; ISOs are built in the Koji build system with a long-running project
from openSUSE called KIWI — Documentation, GitHub. Look at a specific
build to confirm: under logs and then the relevant architecture, root.log
shows a call to kiwi-ng
which logs to image-root.«architecture».log
.
That's a very narrow answer; there is more to the topic. How did Fedora build ISOs in the past? Are there changes planned in the future?
Before release 24, in June 2016, Fedora used livecd-tools to build the ISOs.
Historically kickstart files were used to specify these release images. Fedora
24 was the first release to use livemedia-creator
which is part of Lorax.
In November 2016,
livecd-tools
started to support Python 3 and switched from yum
to dnf
.
Today livecd-tools
has unique features like persistent overlays. There remains
some overlap between livecd-tools
and Lorax.
Around April 2024 — release 40 — Fedora began to build additional ISOs with
Image Builder. Image Builder is a Red Hat project with support for OSTree.
Initially these builds were performed by a separate service, until a
change was made
for Fedora 43 to run Image Builder inside Koji. Image Builder includes
composer-cli
and osbuild-composer
; for an introduction see this 2021
article in Fedora Magazine. Pungi is the software used to produce all of the
artifacts, including the ISOs, for each Fedora release. Fedora stores
configuration files for Pungi in pungi-fedora. According to fedora.conf in
that repository, today the only thing built with Image Builder is a raw image
for aarch64
.
In April 2025 — Fedora 42 — a PR changed the build system for the ISOs to KIWI. The fedora-kiwi-descriptions repository contains the configuration and a table showing the different editions, types and profiles. KIWI doesn't support OSTree.
From related Fedora Discussion threads (1, 2, 3) I gather that in the future Fedora may use Image Builder.