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 updaterpm-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 resetSystem-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-mainContainer-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 devPodman (rootless)
- Für services, Dev-Container, Compose-Workflows.
podman info
podman pull docker.io/library/alpine
podman run --rm -it alpine shUpdates, 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 -mHinweis: Ä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 akmodsFirmware-Updates erfolgen via fwupd:
fwupdmgr get-devices
fwupdmgr get-updates
fwupdmgr updateTypische 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-pipBase-Paket ersetzen/entfernen
- Beispiel: System-Editor auf vim setzen, nano entfernen.
rpm-ostree override remove nano
rpm-ostree install vim-enhancedFirefox als Flatpak (falls nicht bereits Standard)
rpm-ostree override remove firefox || true
flatpak install flathub org.mozilla.firefoxFehlerdiagnose 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=2Bei 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 -mTags
fedorasilverblueostreerpm-ostreeflatpaktoolboxpodmanimmutableatomiclinuxselinuxdistroboxfwupdnvidiarpmfusion