Fedora Silverblue: Praxisleitfaden für ein unveränderliches Desktop-Linux

Konzept und Architektur

  • Unveränderliches Basissystem auf OSTree-Basis: /usr ist read-only, atomare Deployments.
  • Änderungen erfolgen über neue Deployments (keine In-Place-Upgrades); Aktivierung durch Reboot.
  • Zustandsdaten liegen unter /var, Konfigurationsdateien unter /etc werden gemergt und persistieren.
  • rpm-ostree verwaltet Schichten (layered packages), Overrides und Rebases.

Paket- und App-Management

Flatpak (primär für GUI-Apps)

  • App-Isolation, einfache Updates, kompatibel mit Silverblue-Philosophie.
  • Empfohlen: Flathub als Quelle ergänzen.
flatpak remotes
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub com.visualstudio.code
flatpak update

rpm-ostree Layering (sparsam verwenden)

  • Für systemweite CLI-Tools oder Treiber, die als Flatpak nicht sinnvoll sind.
  • Jede Änderung erzeugt ein neues Deployment und erfordert einen Reboot.
# Status, Unterschiede, Historie
rpm-ostree status
rpm-ostree db diff
 
# Layern
rpm-ostree install fish tmux htop
 
# Entfernen von Base-Paketen (Override remove) – Beispiel: nano
rpm-ostree override remove nano
 
# Zurück zum Base-Image (alle Layer/Overrides entfernen)
rpm-ostree reset

System-Extensions

  • Systemd-sysext-basierte Erweiterungen, die Komponenten außerhalb des Base-Images bereitstellen.
  • Installation erfolgt typischerweise ebenfalls via rpm-ostree; Aktivierung mit Reboot oder apply-live (wo unterstützt).

Rebase auf andere Images

  • Wechsel zwischen Releases oder Varianten (z. B. Silverblue → Kinoite), ohne Neuinstallation.
# Klassische OSTree-Remote (Beispiel, ggf. Arch/Version anpassen)
rpm-ostree rebase fedora:fedora/41/x86_64/silverblue
 
# Rebase auf ein Containerisiertes OSTree-Image (Beispiel ublue)
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/silverblue-main

Container-basierte Entwicklung

toolbox

  • Entwicklerfreundliche, an die Host-Version gebundene Fedora-Container mit dnf und vollem User-Komfort.
toolbox create --release $(rpm -E %fedora) dev
toolbox enter dev
sudo dnf groupinstall "Development Tools"

Alternativ: distrobox

  • Flexible Images (z. B. unterschiedliche Distributionen), gute Desktop-Integration.
distrobox create -i registry.fedoraproject.org/fedora:$(rpm -E %fedora) -n dev
distrobox enter dev

Podman (rootless)

  • Für services, Dev-Container, Compose-Workflows.
podman info
podman pull docker.io/library/alpine
podman run --rm -it alpine sh

Updates, Rollbacks, Pinning

# Update (neues Deployment erstellen)
rpm-ostree upgrade
 
# Nach dem Reboot ggf. Rollback auf vorheriges Deployment
rpm-ostree rollback
 
# Bestimmtes Deployment pinnen (nicht automatisch entfernt)
rpm-ostree status
sudo ostree admin pin 0
 
# Aufräumen alter Deployments
rpm-ostree cleanup -m

Hinweis: Änderungen werden erst nach einem Reboot aktiv.

Dateisystem-Layout und Persistenz

  • /usr: unveränderlicher Systembaum (durch OSTree verwaltet).
  • /etc: konfigurierbar, wird bei Deployments gemergt.
  • /var: persistent, beinhaltet auch /var/home (Standardpfad für Nutzer-Home).
  • Backups und State-Handling konzentrieren sich auf /var und /etc.

Treiber und Firmware (Beispiel NVIDIA)

  • Über RPM Fusion als layer installieren; akmods baut Module für den aktuellen Kernel.
# RPM Fusion aktivieren
rpm-ostree install \
  https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
  https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
 
# NVIDIA-Treiber
rpm-ostree install akmod-nvidia xorg-x11-drv-nvidia-cuda
 
# Nach Reboot: Build-Status prüfen
systemctl status akmods

Firmware-Updates erfolgen via fwupd:

fwupdmgr get-devices
fwupdmgr get-updates
fwupdmgr update

Typische Workflows

Minimaler System-Layer, Rest im Container/Flatpak

  • Wenige CLI-Tools layern, Dev-Abhängigkeiten in toolbox/distrobox, GUI-Apps als Flatpak.
rpm-ostree install git ripgrep curl jq
toolbox create -y
toolbox enter
sudo dnf install gcc make python3-pip

Base-Paket ersetzen/entfernen

  • Beispiel: System-Editor auf vim setzen, nano entfernen.
rpm-ostree override remove nano
rpm-ostree install vim-enhanced

Firefox als Flatpak (falls nicht bereits Standard)

rpm-ostree override remove firefox || true
flatpak install flathub org.mozilla.firefox

Fehlerdiagnose und Recovery

# Ausführlicher Systemzustand
rpm-ostree status --verbose
 
# Unterschiede zur Base-Compose
rpm-ostree db diff
 
# Journal der vorherigen Boot-Session
journalctl -b -1 -p 3
 
# Netzwerk/Proxy in Container-Umgebungen testen
toolbox enter -- bash -lc 'curl -I https://example.com'
 
# OSTree-Objekte bereinigen (vorsichtig)
ostree prune --refs-only --depth=2

Bei beschädigten Layern oder fehlerhaftem Deployment:

  • In GRUB das vorherige Deployment booten (Rollback).
  • rpm-ostree reset anwenden, dann gezielt neu layern.

Sicherheit und Policies

  • SELinux standardmäßig enforcing; Container laufen rootless.
  • Geringerer Konfigurationsdrift durch unveränderliches /usr.
  • Atomare Updates reduzieren Risikofenster bei System-Upgrades.

Hinweise zur Desktop-Varianten

  • Silverblue (GNOME) teilt die Grundlagen mit anderen Fedora Atomic Desktops (z. B. Kinoite/KDE, Sericea/Sway, Onyx/Budgie).
  • Rebase zwischen Varianten ist möglich, Workflows bleiben identisch.

Nützliche Befehle (Spickzettel)

# Status, Version, Commits
rpm-ostree status
 
# Update/Upgrade
rpm-ostree upgrade && systemctl reboot
 
# Paket layern/entfernen
rpm-ostree install <pkg>
rpm-ostree uninstall <pkg>
 
# Overrides
rpm-ostree override remove <pkg>
rpm-ostree reset  # alle Layer/Overrides entfernen
 
# Rebase (Release/Variante wechseln)
rpm-ostree rebase fedora:fedora/<ver>/<arch>/silverblue
 
# Flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub <AppID>
 
# toolbox
toolbox create --release $(rpm -E %fedora)
toolbox enter
 
# Cleanup
rpm-ostree cleanup -m

Tags

fedorasilverblueostreerpm-ostreeflatpaktoolboxpodmanimmutableatomiclinuxselinuxdistroboxfwupdnvidiarpmfusion

Linux-Blog-Overview