Immutable Linux: Fedora Silverblue, Vanilla, openSUSE Aeon
Learn how Fedora Silverblue, openSUSE Aeon, and Vanilla OS implement immutable, atomic updates with OSTree, transactional-update, and ABRoot—and how to work productively inside them.
Before you start
- ▸A running installation of Fedora Silverblue, openSUSE Aeon, or Vanilla OS 2.x
- ▸Basic familiarity with a Linux terminal and package management concepts
- ▸Internet connection for downloading updates and Flatpaks
- ▸sudo or wheel group membership for administrative commands
Immutable desktop Linux distributions flip the traditional model on its head: the root filesystem is read-only, updates are applied atomically as whole-image transactions, and bad updates can be rolled back in seconds. Fedora Silverblue, Vanilla OS, and openSUSE Aeon each take this idea seriously but implement it differently. This guide covers how they work under the hood, how to live productively inside them, and when to reach for each tool in your arsenal.
How Immutable Desktops Work
The key insight is that traditional package managers mutate a live system in place—if something goes wrong mid-upgrade, you can be left with a broken state. Immutable distros avoid this by treating the OS as an image you swap between, not a pile of files you edit.
OSTree / rpm-ostree (Silverblue and friends)
OSTree is a content-addressed, Git-like object store for filesystem trees. Fedora Silverblue, Kinoite, and the broader Fedora Atomic Desktops family use rpm-ostree on top of OSTree. Each update downloads a new commit, places it alongside the current deployment on disk, and updates the bootloader to point to it. Your running system is never touched until the next boot.
Deployments live under /ostree/deploy/. Only two are kept by default (current + previous), keeping disk use reasonable.
Transactional Updates (openSUSE Aeon / MicroOS)
openSUSE Aeon uses Btrfs snapshots combined with transactional-update. An update is applied to a new Btrfs snapshot of the root subvolume; if the snapshot boots successfully, it becomes the new default. The running system is never modified. GRUB is automatically updated to offer rollback at the boot menu.
Vanilla OS (ABRoot)
Vanilla OS 2.x uses ABRoot, an A/B partition scheme. Two root partitions exist (A and B); updates are applied to the inactive partition, then the bootloader is switched. You always boot from one complete, known-good root. Vanilla also layers OCI images, pushing the immutable concept even further toward containers-as-OS.
Fedora Silverblue: Day-to-Day Workflow
Checking status and current deployment
rpm-ostree status
Output shows the booted deployment (marked with a star), its commit hash, and any staged deployment waiting for reboot. It will vary based on your installed layered packages and current Fedora version.
Updating the system
rpm-ostree upgrade
This stages a new deployment. Nothing changes until you reboot. To stage and reboot in one step:
rpm-ostree upgrade --reboot
GNOME Software handles updates graphically and will prompt you to reboot to apply them—it uses the same rpm-ostree backend.
Rolling back a bad update
rpm-ostree rollback
This makes the previous deployment the default for next boot. You can also select it from the GRUB menu without running any command, which is useful when the system won't boot far enough for a shell.
Layering packages (use sparingly)
The base image is meant to be lean. You can layer RPM packages on top of the OSTree commit when Flatpak, Toolbox, or a container won't work—for example, a kernel module or a hardware driver:
rpm-ostree install fuse-sshfs broadcom-wl
Layered packages are baked into your local deployment and persist across base upgrades, but they do increase update time and complexity. Keep the list short.
To remove a layered package:
rpm-ostree uninstall fuse-sshfs
Pinning a known-good deployment
sudo ostree admin pin 0
Index 0 is the booted deployment. Pinned deployments are not garbage-collected, giving you a permanent fallback. Unpin with ostree admin pin --unpin 0.
openSUSE Aeon: Transactional Updates
Applying updates
sudo transactional-update
This creates a Btrfs snapshot, applies all pending zypper updates inside it, and exits. Reboot to activate. Aeon also ships a systemd timer (transactional-update.timer) that does this automatically overnight—check its status with:
systemctl status transactional-update.timer
Installing packages transactionally
sudo transactional-update pkg install v4l2loopback-kmp-default
The package lands in the next snapshot, not the running system. Running zypper install directly on Aeon will warn you and may be blocked, depending on the release—always go through transactional-update for anything touching the root filesystem.
Rolling back
Select an older snapshot from the GRUB menu at boot (openSUSE labels them by date and snapshot number), or use:
sudo snapper rollback
Then reboot. The chosen snapshot becomes the new read-write default for the next transactional update cycle.
Application Strategy: Flatpak, Toolbox, and Distrobox
All three distros are designed with the expectation that most user-facing software comes from Flatpak, and that developer toolchains live in containers. Embrace this; fighting it creates unnecessary layered-package debt.
Flatpak for desktop apps
# Silverblue / Aeon / Vanilla OS
flatpak install flathub org.gimp.GIMP
flatpak update
Flatpak apps are fully independent of the OS image. Updates happen separately and don't require a reboot. On Silverblue, Flathub is pre-configured; on Aeon, you may need to add it:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Toolbox / Distrobox for development
toolbox (Fedora) and distrobox (cross-distro) create rootful or rootless containers that share your home directory and feel like a native shell. Install anything inside without touching the host:
# Fedora Silverblue — create a Fedora 40 toolbox
toolbox create --release 40
toolbox enter
# Any immutable distro — Distrobox with an Ubuntu 24.04 container
distrobox create --name dev-ubuntu --image ubuntu:24.04
distrobox enter dev-ubuntu
Inside a Distrobox container you can run apt, dnf, or pacman freely. GUI apps launched from inside the container appear on the host desktop via socket passthrough—including Wayland support.
Verification: Confirming Your Deployment State
After any update or rollback, confirm what you're actually running:
# Silverblue
rpm-ostree status
uname -r
# openSUSE Aeon
btrfs subvolume list / | head -20
snapper list
For Silverblue, rpm-ostree status should show the booted commit with a checksum matching what you just pulled. For Aeon, snapper list will list snapshots with their creation time and whether the current one is active.
Troubleshooting
rpm-ostree is stuck or shows a conflict
If a previous operation was interrupted, a staged deployment may be corrupt. Clean it with:
rpm-ostree cleanup -s
The -s flag removes only the staged deployment. Use -p to also remove pending, -r for rollback deployments, and -m for cached metadata.
A layered package blocks an upgrade
Sometimes a layered package has no equivalent in the new base commit (e.g., it was renamed or dropped from the repo). rpm-ostree will refuse to upgrade and tell you which package is the problem. Options: remove the layer (rpm-ostree uninstall <pkg>), override the upgrade to skip it, or find a Flatpak/container replacement before upgrading.
Aeon: transactional-update fails to apply
Check the journal for the zypper transaction inside the snapshot:
sudo journalctl -u transactional-update --since today
Most failures are network errors or GPG key issues. Running sudo transactional-update dup forces a full distribution upgrade, which can resolve dependency deadlocks.
Home directory data is always safe
On all three distros, /home is a separate subvolume or partition that is never part of the OS image. Rolling back the OS does not affect your files. That said, application config files in ~/.config may reference features or file formats from the newer version—test before you commit to staying on the rollback.
Frequently asked questions
- Can I run traditional RPM or DEB packages on these distros?
- Yes, but indirectly. On Silverblue you can layer RPMs with rpm-ostree install, and on Aeon with transactional-update pkg install. For Debian/Ubuntu packages on any of them, use a Distrobox container running the appropriate distro—this is the cleaner long-term approach.
- Does rolling back affect my home directory and personal files?
- No. /home is always on a separate subvolume or partition that is excluded from OS deployments and snapshots. Rolling back only reverts the root filesystem; your data is untouched.
- How many old deployments or snapshots are kept?
- Silverblue keeps two OSTree deployments by default (current and previous) unless you pin more. Aeon's snapper configuration keeps a configurable number of timeline snapshots; check /etc/snapper/configs/root for the retention settings.
- Are Flatpak apps affected when I roll back the OS?
- No. Flatpak apps live under /var/lib/flatpak and are not part of the OSTree commit or Btrfs root snapshot. They remain at whatever version they were when you roll back.
- Which of these three distros is best for a beginner to immutable Linux?
- Fedora Silverblue is the most documented and has the largest community. openSUSE Aeon is an excellent choice if you prefer a rolling release with Btrfs snapshots. Vanilla OS 2.x is the most experimental of the three and best suited to users who want to follow cutting-edge OCI-based OS development.
Related guides
Alpine Linux on Servers and in Containers
Deploy Alpine Linux on servers and in containers: musl vs glibc trade-offs, apk package management, OpenRC init, security hardening, and container best practices.
Arch vs EndeavourOS vs Manjaro
Arch, EndeavourOS, and Manjaro compared honestly: repository differences, AUR compatibility, install experience, and which one suits your actual workflow.
The Best Linux Distros for Beginners
The best Linux distros for beginners in 2024: Ubuntu, Linux Mint, Fedora, and Pop!_OS compared with honest pros, cons, and setup tips.
The Best Linux Distros for Servers
Compare Ubuntu LTS, Debian, AlmaLinux, Rocky Linux, RHEL, Arch, and SLES for server use: support lifecycles, stability trade-offs, and how to choose the right fit.