Unveränderliche Systeme sind auf dem Vormarsch. Universal Blue zeigt deren Möglichkeiten auf, was Flexibilität und Erweiterbarkeit angeht.
Ginge es darum, den Begriff des Jahres 2023 in der Linux-Welt zu küren, so würden sich vermutlich Immutable Systems, zu Deutsch: unveränderliche Systeme, einen der vorderen Plätze sichern – und das trotz viel Clickbaiting nicht ganz zu Unrecht. Denn nicht nur Linux im Unternehmen befindet sich im Wandel, sondern auch der bisher verfolgte Desktop-Ansatz.
Dieses neue Paradigma hat längst noch nicht sämtliche Linux-Nutzer auf seine Seite gebracht. Das ist nur allzu menschlich, denn viele Anwender scheuen Veränderung, wie schon der Ausspruch “never change a running system” belegt. Unvergessen sind die Grabenkämpfe um Systemd, das sich zwar heute auf breiter Front durchgesetzt hat, bei einigen Traditionalisten jedoch immer noch nicht zum Einsatz kommt. Bei den unveränderlichen Systemen dürfte Ähnliches zu erwarten sein. Wie bei Systemd halten bei Immutable-Systemen die Kontrapunkte einer näheren Überprüfung häufig nicht stand.
In diesem Artikel geht es um Jorge Castro [1] und Universal Blue. Castro, ein ehemaliger Canonical-Angestellter, ist eine der treibenden Kräfte beim Übergang vom herkömmlichen Distributionsmodell hin zum plakativ als Immutable bezeichneten Paradigma. Wenn Sie eine Suche nach Castro im Internet starten, finden Sie viele Texte und fast 200 Youtube-Videos, in denen er Mythen über dieses neue Modell entkräftet und seinen persönlichen Ansatz vorstellt [2]. Unter der Überschrift “Awesome Immutable” pflegt er zudem eine Sammlung von Verweisen zu Blogs und anderen Veröffentlichungen zum Thema [3].
Seinen Ansatz fasst Castro unter dem Oberbegriff Universal Blue (kurz: Ublue) zusammen. Dahinter verbirgt sich keine Distribution, sondern ein Konzept, das Images für verschiedene Workflows anbietet. Castro möchte mit seiner vertrauten Ubuntu-Umgebung arbeiten, ist aber gleichzeitig von den Vorteilen eines unveränderlichen Dateisystems überzeugt. Also begann er mit Fedora Silverblue zu experimentieren, dem Immutable-Ansatz von Fedora. Heraus kam schließlich ein System, das wie Ubuntu aussieht, aber im Kern unveränderlich ist.
Der Immutable-Ansatz
Zunächst lohnt sich ein Blick darauf, wofür der Begriff “immutable” steht. Unveränderliche Systeme werden sich vermutlich über kurz oder lang auch auf dem Desktop durchsetzen, da sie nicht zu leugnende Vorteile bieten: Sie sind weniger fehleranfällig, benötigen weniger Aufmerksamkeit und stehen dem Anwender deshalb weniger im Weg. Auf herkömmlichen Systemen werden alle Pakete, egal, ob aus dem Archiv der Distribution, aus einem PPA oder aus einem Dritt-Repository als Root installiert. Da sich die Seriosität mancher Quellen kaum verifizieren lässt, setzt das eine Menge an Vertrauen voraus, das sich oft gar nicht begründet aufbringen lässt.
Anders bei modernen Distributionen wie Fedora Silverblue, Suse MicroOS, Endless OS, Vanilla OS [4] oder BlendOS [5]. Bei diesen Distributionen greifen Sie (teilweise oder vollständig) nur mit Leserechten auf das Root-Dateisystem zu, also auf alles außer dem Home-Verzeichnis. Es gibt im Kern meist einen Satz von im Format des jeweiligen Paketmanagers vorinstallierten Basisanwendungen, die zusammen mit diesem Kern als Gesamt-Image aktualisiert werden. Misslingt ein Update oder läuft eine Anwendung nicht richtig, rollen Sie einfach auf das letzte funktionierende Image zurück.
Zusätzliche Anwendungen installieren Sie als Flatpak, wobei das Flathub-Repository häufig bereits eingebunden ist und sich weitere, sogenannte Remotes hinzufügen lassen. Damit decken Sie bereits einen Großteil des täglichen Bedarfs an Applikationen ab. Es kommt aber noch besser.
Distrobox
Eine entscheidende Innovation begann bei Fedora Silverblue mit Toolbox [6], einem Container-orientierten Werkzeug für Treiber und CLI-Tools, die Flatpak nicht anbietet. Daraus entwickelte Luca Di Maio, Mitbegründer von Vanilla OS, Distrobox [7]. Diese Erweiterung von Toolbox erlaubt die Installation und Integration von Paketen anderer Distributionen über deren Paketmanager. Der erstellte Container wird eng in den Host integriert und ermöglicht die gemeinsame Nutzung des Home-Verzeichnisses des Benutzers. Dabei kommt er mit externem Speicher, externen USB-Geräten und grafischen Anwendungen unter X11 und Wayland zurecht. Beide Konzepte nutzen Container zur Isolation der Anwendungen vom System und voneinander. Damit eröffnen sie ganz neue Möglichkeiten – besonders für Entwickler, aber auch für Heimanwender.
Da Castro seinen gewohnten Arbeitsfluss nicht ändern wollte, hat er mit Ublue dem Immutable-Konzept seine Arbeitsweise aufgedrückt. Damit zeigt er nicht nur das Potenzial des Konzepts auf, sondern entkräftet auch den Vorwurf, diese Systeme seien zu rigide und erlaubten keinen tieferen Eingriff ins System. Das tun sie durchaus, aber anders als bisher.
Genug der Theorie: Sehen wir uns Castros Universal Blue [8] in der Praxis an. Was er anstrebt, ist die Zuverlässigkeit eines Chromebooks, gepaart mit der Flexibilität und Leistung eines traditionellen Linux-Desktops. Für die Systemgrundlage bedient er sich bei Fedora Silverblue [9], der unveränderlichen Distribution aus Red Hats Experimentierküche. Ublue umfasst mehrere Ansätze; uns gefiel vor allem der oben erwähnte mit einem “unveränderlichen Ubuntu”: Anwender können das Konzept weitgehend auf die eigenen Bedürfnisse zuschneiden.
Via Silverblue zu Ubuntu
Der Weg dorthin führt über die Installation von Fedora Silverblue und die anschließende Anpassung mit Castros Skripten. Silverblue ist nicht als Live-Medium ausgelegt. Es startet direkt in den Installer, der das System auf aktueller Hardware in rund zehn Minuten aufsetzt. Nach dem ersten Neustart durchlaufen Sie den gewohnten Gnome-Einrichtungsdialog und finden sich danach in einem Desktop wieder, der von dem der Fedora Workstation optisch nicht zu unterscheiden ist (Abbildung 1). Es fällt allerdings auf, dass prinzipbedingt weniger Anwendungen installiert sind. Im Hintergrund sorgt unter anderem RPM-OSTree für ein unveränderliches Root-Dateisystem [10].

Abbildung 1: Fedora Silverblue unterscheidet sich optisch von Fedora Workstation lediglich durch den reduzierten Paketumfang.
Wenn Sie diese Installation in einer virtuellen Maschine nachvollziehen, stellen Sie fest, dass etwa in VirtualBox die Gasterweiterungen zwar installiert werden, sich aber nicht wirksam nutzen lassen. Um die Auflösung an das vorhandene Display anzupassen, setzen Sie in den Einstellungen unter Bildschirme die Auflösung entsprechend hoch. Die Einstellung blieb bei unserem Test auch nach Neustarts erhalten.
Castros Skripte
Damit haben wir aber erst die halbe Miete: Wir möchten ja sehen, wie Castro das System angepasst hat, um zu seiner gewünschten Arbeitsumgebung zu gelangen. Bevor Sie beginnen, stellen Sie zunächst über ein Update sicher, dass Sie auf dem neuesten Stand sind (Listing 1, erste Zeile). Dann wechseln Sie in Ihr Home-Verzeichnis, das bei Silverblue, abweichend vom Üblichen unter /var/home/User/ liegt (Listing 1, Zeile 2). Nun klonen Sie Castros Skript-Set [11] (Zeile 3) und wechseln in das dabei neu entstandene Verzeichnis (Zeile 4). Dort sehen Sie sich an (Zeile 5), was heruntergeladen wurde (Abbildung 2).
Listing 1
Ublue einrichten
$ rpm-ostree update $ cd $ git clone https://castrojo/ublue.git $ cd ublue/ $ ls -l[... applications.list editieren ... ][... layered-packages.list editieren ... ] $ sudo ./00-install-apps.sh[... Neustart ... ] $ cd ~/ublue $ ./01-desktop.sh $ ./02-integrations.sh $ cd bits/[... Desktop-Anpassungen ... ] $ rpm-ostree install distrobox[... Neustart ... ] $ distrobox-create -i docker.io/library/ubuntu:22.04 -n ubuntu

Abbildung 2: Nach dem Klonen der Skripte von Github und dem Auflisten des Inhalts sehen Sie unter anderem drei Skripte, einige Listen und einen Befehl, um die Änderungen rückgängig zu machen.
Werfen Sie zunächst einen Blick auf die Datei applications.list. Sie führt die von den Skripten installierten Anwendungen auf. Editieren Sie die Liste nach Ihren Anforderungen (Abbildung 3). Lediglich die Standardanwendungen sind freigeschaltet, in den anderen Gruppen müssen Sie das Doppelkreuz vor zu installierenden Apps entfernen. Umgekehrt schließen Sie unerwünschte Standard-Apps durch Auskommentieren aus. Alle gelisteten Apps werden als Flatpak installiert. Nicht als Flatpak zur Verfügung stehende Software zieht RPM-OSTree über die layered-packages.list in das ansonsten schreibgeschützte Root-Dateisystem nach (Abbildung 4).

Abbildung 3: Die Liste der zu installierenden Anwendungen editieren Sie nach Ihren Bedürfnissen, bevor Sie die Skripte anstoßen.

Abbildung 4: Das Attribut layered bezeichnet Apps oder Erweiterungen, die Ublue nicht als Flatpak oder per Distrobox installiert, sondern mittels RPM-OSTree direkt ins Root-Dateisystem befördert. Auch diese Liste können Sie anpassen.
Nun führen Sie das Skript aus (Listing 1, Zeile 8), das die zu installierenden Anwendungen aus den beiden Listen abarbeitet (Abbildung 5). Anschließend steht ein Neustart an, da die Anwendungen aus der layered-packages.list im nur komplett als Image aktualisierbaren Kernsystem installiert werden. Das zweite Skript (Zeile 11) passt Gnome und die Shell in Richtung Ubuntu an. Das dritte Skript (Zeile 12) definiert das Hintergrundbild sowie die Schriftarten und setzt einige Distroboxen auf. Beim Desktop-Skript mussten wir zwei nicht mehr aktuelle Zeilen auskommentieren, erst dann lief das Skript durch (Abbildung 6).

Abbildung 5: Vor den gewünschten Flatpaks installiert das erste Skript die dafür benötigten Laufzeitumgebungen.

Abbildung 6: Das zweite Skript nimmt über das Gnome-Konfigurationssystem Dconf diverse Änderungen vor, um Gnome optisch anzupassen.
Unter ublue/bits/ liegen weitere Skripte, die zum Teil etwas tiefer ins System eingreifen (Abbildung 7). Sind Sie nach dem Ausführen der Skripte mit dem Ergebnis nicht zufrieden, kehren Sie mit ./reset.sh wieder zum ursprünglichen Silverblue zurück. Im Ordner bits/ liegen unter anderem Skripte für die Ubuntu-Themes Yaru und Yaru-Dark sowie den Shell-Prompt Starship (Abbildung 8). Bevor Sie nun einen Neustart zur Aktivierung ausführen, installieren Sie noch Distrobox (Listing 1, Zeile 15).

Abbildung 7: Im Ordner ublue/bits/ liegen weitere Skripte zur Anpassung. Über distrobox-terminal-profile definieren Sie, dass standardmäßig immer das Ubuntu-Terminal startet.

Abbildung 8: Über die Skripte in ublue/bits/ lassen sich unter anderem der Starship-Prompt einrichten und das Theme Yaru in zwei Varianten installieren.
Nach dem Neustart legen Sie mit dem Kommando aus Zeile 17 einen Ubuntu-Container in Silverblue an. Sie sind dabei weder auf Ubuntu noch auf einen einzigen Container beschränkt, die Liste der unterstützten Distributionen ist lang [12]. Die Anzahl der Container richtet sich ausschließlich nach Ihrer Hardware.
Mit dem Kommando distrobox enter ubuntu gelangen Sie in Ihren Container (Abbildung 9). Mit exit verlassen Sie ihn und landen wieder im Terminal von Silverblue. Gefällt Ihnen das Ergebnis nicht, können Sie das System mit dem Rebase-Befehl [13] in andere Silverblue-basierte Images umwandeln.

Abbildung 9: Nach dem Aufsetzen und Betreten eines Distrobox-Containers – in diesem Fall für Ubuntu – können Sie dort so arbeiten, als befänden Sie sich im Host-System.
Fazit
Wenn Castros Konzept eines aufzeigt, dann die Tatsache, dass unveränderliche Systeme keinesfalls die gewohnte Flexibilität einschränken. Im Gegenteil, mit Distrobox wächst sie sogar. Außerdem können Immutable-Systeme unbedarfte Anwender vor sich selbst schützen: Sie verhindern Änderungen am Root-Dateisystem, verlangen insgesamt weniger Aufmerksamkeit und setzen weniger Wissen über das System voraus.
Castros Workflow geht dahin, seinen gesamten Userspace in Distrobox abzubilden und das Silverblue-Grundsystem zwar als Basis zu verwenden, aber nicht bei der Arbeit. Ihre Maxime kann eine gänzlich andere sein. Sie können die Ublue-Skripte beliebig an Ihre Bedürfnisse anpassen oder alternativ das Grundsystem per Rebase auf eine ganz andere Basis umheben. (csi/jlu)
Infos
-
Jorge Castro: https://www.ypsidanger.com
-
Castros Youtube-Playlist: https://www.youtube.com/c/JorgeCastro/videos
-
Immutable-Link-Sammlung: https://github.com/castrojo/awesome-immutable
-
Vanilla OS: Ferdinand Thommes, “Frischer Wind”, LU 04/2023, S. 24, https://www.linux-community.de/48649
-
BlendOS: Erik Bärwaldt, “Bunter Strauß”, LU 06/2023, S. 6, https://www.linux-community.de/49078
-
Toolbox: https://gnulinux.ch/eine-kurze-einfuehrung-in-toolbox-unter-fedora
-
Distrobox: https://github.com/89luca89/distrobox
-
Ublue: https://universal-blue.org
-
Silverblue: https://fedoraproject.org/silverblue/
-
RPM-OSTree: https://github.com/coreos/rpm-ostree
-
Castros Skripte: https://github.com/castrojo/ublue
-
Distrobox-Distributionen: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros





