Technical Information

This page provides some background technical information on Fedora Kinoite, 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 Kinoite in a non-standard manner.

ostree and rpm-ostree

ostree is the core technology that is used to compose, deploy and update Fedora Kinoite. 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 Kinoite 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 Kinoite.

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 Kinoite filesystem layout

On Fedora Kinoite, the root filesystem is immutable. This means that /, /usr and everything below it is read-only.

/var is where all of Fedora Kinoite’s runtime state is stored. 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.

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