Systemd 214 greift tief in die Linux-Verzeichnishierarchie ein
Das Init- und Systemmanagement-System Systemd greift ab der neuen Version 214 noch tiefer ins System ein als bisher. Dabei sind durchgreifende Veränderungen der Verzeichnisstruktur Filesystem Hierarchy Standard (FHS) geplant. So sollen die Verzeichnisse /var und /etc teilweise völlig verschwinden oder leer bleiben.
In seinem Blog erläutert Systemd-Mastermind Lennart Poettering die neuen Funktionen, die er in vier Modelle einteilt, die um den Begriff „Stateless Systems“ kreisen. Diese Idee ist keinesfalls neu, arbeitete doch bereits 2004 ein Entwickler bei Poetterings Arbeitgeber Red Hat dieses Szenario aus. Allerdings ist eine Umsetzung dieser Vision heute wahrscheinlicher als vor zehn Jahren und Systemd eine gute Gelegenheit, diese Änderungen bei allen Distributionen durchzusetzen, die Systemd nutzen.
Die vier Stufen von Poetterings Plan heißen „Factory Reset“, „Stateless Systems“, „Reproducible Systems“ und „Verifiable Systems“. Der verbindende Faktor ist hier die Idee eines zustandslosen (stateless) Systems, das keinerlei Zustände dauerhaft speichert und auf die Verzeichnisse /var und /etc weitgehend verzichtet.
Unter Factory Reset versteht Poettering ein Zurücksetzen des Systems auf Standardeinstellungen durch Löschen der Konfigurationen in /var und /etc, sodass das System beim nächsten Start im Auslieferungszustand hochfährt. Diese Konfiguration sieht der Entwickler vom Desktop über Server bis hin zu eingebetteten Systemen als sinnvoll nutzbar an.
Einen Schritt weiter gehen die Stateless Systems. Hier werden generell keine Daten in /var und /etc persistent gespeichert. Diese Systeme verhalten sich vergleichbar einer Live-CD und jeder Neustart ist ein Factory Reset. Die beiden obigen Verzeichnisse, in denen Konfigurationen und variable Daten lagern, können als RAM-Disk virtuell im Arbeitsspeicher angelegt werden.
Die benötigten Einstellungen werden zur Laufzeit entweder aus den installierten Paketen extrahiert oder etwa von Servern im Netz bezogen. Diese Funktionalität sieht Poettering bei Container-Systemen wie Docker und CoreOS, dessen Komponente „etcd“ ähnliche Aufgaben übernimmt, und bei Rechnern, die vom Netz aus booten, als sinnvoll an.
Als Reproducible Systems definiert Systemd Systeme, die einen unveränderlichen Schnappschuss in Container oder andere Systeme multiplizieren. Hierbei werden nur lokale Konfigurationen und Zustände gespeichert, während das Basissystem unveränderlich mit einem schreibgeschützten Verzeichnis /usr startet, das per NFS, bei Containern als Bind-Mount oder als BTRFS-Schnappschuss eingebunden wird.
Bei Verifiable Systems, die sich ähnlich wie zustandslose Systeme verhalten, wird zu guter Letzt die Integrität von /usr kryptografisch sichergestellt. Sollen /var und /etc mit im Image sein, müssen auch sie verifizierbar sein oder sie werden zum Hochfahren des Systems nicht benötigt.
Des Weiteren geht Poettering auf die technischen Herausforderungen seiner Idee ein. Ist es bei /var nicht weiter schwierig, die benötigte Struktur per Tempfile-Konfiguration beim Booten zu erzeugen, ist dies bei /etc ungleich schwerer, liegen doch hier Dateien wie /etc/passwd und /etc/group, die Daten der Systemnutzer und Gruppenzugehörigkeiten bereitstellen. Diese soll Systemd zukünftig im neuen Verzeichnis /usr/lib/sysusers.d anlegen. Generell soll Systemd in der Lage sein, Verzeichnisstrukturen an benötigte Stellen wie in diesem Fall Verzeichnisse unterhalb von /usr zu kopieren.
Erst mit Systemd 215 soll ein Hochfahren von Systemen ohne /etc möglich sein. Hier wird dann mittels des neuen Tools systemd-sysusers das Verzeichnis /usr/lib/sysusers.d erstellt. Das neue Werkzeug soll allerdings auch vom Paketmanager während der Paketinstallation aufgerufen werden können, um Befehle wie useradd -r und groupadd -r zu ersetzen.
Mit jedem weiteren Release von Systemd wird die Vision der Entwickler deutlicher. Die ursprünglich als Init-System gestartete Software will deutlich mehr und entwickelt sich immer mehr zum invasiven Systemmanagement-Werkzeug. Abgesehen davon, dass der neue Vorstoß hin zu zustandslosen Systemen bereits nach einem Tag Diskussionen etwa auf Google + auslöst, wo Debians Systemd-Maintainer Michael Biebl Lennart Poettering in einigen Punkten vehement widerspricht, ist auch noch sehr viel Arbeit zu tun. Derzeit sind noch sehr viele Pakete auf Daten in /etc oder /var angewiesen. Zudem müssen Distributoren die neuen Funktionen in den entsprechenden Paketen implementieren.