The root filesystem has the immutable attribute set on OSTree
/usr and everything below it is readonly.
where all the runtime state is kept. There are some symlinks that put
the state-carrying directories in their traditional, expected place:
and so on. If you have a separate home partition on your system, it
should be mounted on
For a more detailed explanation of the system layout, refer to the excellent libostree documentation on this subject.
ostree is responsible for deploying and updating the OS image (ie
/ that is not symlinked into
/var). ostree also
contains the necessary logic to update grub.cfg entries to point to the
rpm-ostree builds on top of ostree, and makes it possible to install rpms as a 'layer' on top of an ostree image. In practice, that means you can install rpms as usual, just use rpm-ostree install instead of dnf install. What happens under the covers is that rpm-ostree will compose a new OS image by adding the rpm payload to the existing OS image, and creating a new, combined image. To see the newly installed rpms, you have to reboot into the new image. rpm-ostree also takes care of recreating the layered image whenever you update the base OS image.
flatpak uses container technologies to deploy and run desktop applications isolated from the underlying OS.
You can of course use other container tools like podman or buildah to run other containers on a Silverblue system.
If you don’t want to use the flatpak commandline tools, GNOME Software has excellent support for installing Flatpaks. There are several repositories that provide Flatpaks.
Once you have repositories enabled, you can use GNOME Software’s
excellent support for searching Flatpaks. Or you can use
Package layering works by re-composing the OS image locally, while
adding extra rpm packages to it. This is done with the
install command. Once a package has been layered, rpm-ostree will keep
it up-to-date for you and recreate the layer when you install a newer OS
You can also remove a package from OS image. The command to do this is
rpm-ostree override remove.
rpm-ostree does not currently have an equivalent to the
command for finding packages in the configured repositories. As a
workaround, you can run dnf in a temporary container like this:
$ sudo podman run --rm fedora:28 dnf search (1)
|1||provide your search term|
Silverblue installs a number of yum repositories containing useful software that is not part of Fedora proper for various reasons. You can enable these repositories either during the initial setup of an new install, or from the "Software Repositories" dialog in GNOME Software.