Technical Information

This page provides some background technical information on Fedora Sway Atomic, including information on the core technologies used to build it, as well as the filesystem layout.

Users should not need to know this information. It is provided here for those who are interested in the technical details or those who want to use Fedora Sway Atomic in a non-standard manner.

ostree and rpm-ostree

ostree is the core technology that is used to compose, deploy and update Fedora Sway Atomic. ostree operates in a similar manner to a version control system, but it operates on entire filesystem trees. It is often described as “Git for operating system binaries”.

For Fedora Sway Atomic installs, ostree is responsible for deploying and updating the OS image (including everything below / that is not symlinked into /var). It also updates grub.cfg entries to point to the current image.

rpm-ostree builds on top of ostree, and makes it possible to install RPMs as a “layer” on top of an ostree image. This makes it possible to install RPMs on Fedora Sway Atomic.

When a package is installed with rpm-ostree, a new OS image is composed by adding the RPM payload to the existing OS image, and creating a new, combined image. To see the newly installed RPMs, the system needs to be rebooted with the new image. rpm-ostree also takes care of recreating the layered image whenever you update the base OS image.

Fedora Sway Atomic filesystem layout

On Fedora Sway Atomic, the root filesystem (/) is immutable. The /usr directory and everything below it is read-only.

The /etc and /var directories are respectively used to store configuration files and runtime state and are thus writable. Symlinks are used to make traditional state-carrying directories available in their expected locations. This includes:

  • /home/var/home

  • /opt/var/opt

  • /srv/var/srv

  • /root/var/roothome

  • /usr/local/var/usrlocal

  • /mnt/var/mnt

  • /tmp/sysroot/tmp

This means that separate home partitions should be mounted on /var/home.

Since Fedora Linux 37, the /sysroot directory is also mounted read-only.

The /boot and /boot/efi directories are currently also mounted as writable but there are plans to mount them read-only in the future or even not mount them at all. See Mount /boot as Read Only by default and Do not mount /boot/efi by default.

For a more detailed explanation of Fedora Sway Atomic’s filesystem layout, refer to the libostree documentation.