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.