Technical Information
This page provides some background technical information on Fedora Silverblue, 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 Silverblue in a non-standard manner.
ostree and rpm-ostree
ostree is the core technology that is used to compose, deploy and update Fedora Silverblue. 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 Silverblue 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 Silverblue.
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 Silverblue filesystem layout
On Fedora Silverblue, the root filesystem is immutable.
This means that /
, /usr
and everything below it is read-only.
/var
is where all of Fedora Silverblue’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 Silverblue’s filesystem layout, refer to the excellent libostree documentation.
Want to help? Learn how to contribute to Fedora Docs ›