Init Freedom: Auch systemd ist nicht alternativlos
Mo, 20. Dezember 2021, Niklas
Das erst 2010 gestartete systemd Projekt des Red Hat Konzerns ist inzwischen der de-facto Standard für die Steuerung und Überwachung von Daemons und viel mehr auf Linux Systemen. Neuere Linux-Anwender kennen vielleicht gar nichts anderes mehr, als die Befehle systemctl (für Daemons) und journalctl (für Logs).
Und doch ist systemd nicht alternativlos. Mögliche Alternativen sind: SysVinit, OpenRC, runit, sinit, s6, dinit oder GNU Shepherd. Unix-artige Betriebssysteme sind für ihre Vielfalt und Auswahlmöglichkeiten bekannt. Wir haben beispielsweise weit mehr als 10 verschiedene Desktopoberflächen, wäre es da nicht schade, nur noch ein einziges Init System zu haben? In der Serie Init Freedom werden wir uns die verschiedenen Möglichkeiten und einige Distributionen, die diese nutzen, näher anschauen.
Früher nutzten die meisten Linux Distributionen das Init System SysVinit von Unix System V. Es wurde allerdings von einigen als veraltet angesehen, weshalb die Unix Systeme Solaris schon 2004 und Mac OS X 2005 Alternativen dazu einführten. 2006 folgte Ubuntu diesem Schritt mit Upstart, das wenige Jahre von einigen weiteren Distributionen verwendet wurde. Nach dem Erscheinen von systemd 2010 wechselten schrittweise fast alle grossen Linux Distributionen darauf. Als letzte Distribution zog 2014 auch Ubuntu nach.
Auf Distributionen mit systemd ist es so gut wie unmöglich, dieses zu ersetzen, da es sehr stark ins System verwurzelt ist und dort viele verschiedene Aufgaben übernimmt, viel mehr, als es die anderen Init Systeme taten. Ausserdem sind Alternativen schlicht nicht mehr in den Paket Repositorys enthalten.
Aber systemd hat auch viele Kritiker. Bei Debian führte die Umstellung auf systemd zu monatelangen Streits in der Community und letztendlich zu einer ganz neuen Distribution, Devuan, die eine grosse Auswahl an verschiedenen Init Systemen anbietet und die Init Freedom Kampagne gestartet hat. Devuan als die vielleicht bekannteste Distribution ohne systemd werde ich in der Serie natürlich auch näher vorstellen.
Der Hauptkritikpunkt an systemd ist seine Vielseitigkeit. Es verletzt die Unix Philosophie, nur eine Aufgabe zu erledigen, diese aber so gut wie möglich. Systemd ist auch zu komplex und fehleranfällig. Ausserdem wird kritisiert, dass es Googles DNS und NTP Server als Fallback fest einprogrammiert hat. Auch zahlreiche schwerwiegende Sicherheitslücken sprechen nicht für systemd.
Des Weiteren ist systemd auf den Linux Kernel beschränkt. Die BSD Betriebssysteme, illumos Distributionen und Systeme, die den GNU Hurd Kernel nutzen, können es beispielsweise nicht nutzen. Allein aus diesem Grund muss es weiterhin andere Lösungen geben. Die BSDs setzen mehrheitlich auf ihr eigenes rc.d Init System. OpenIndiana, die bekannteste illumos Distribution, nutzt hingegen Service Management Facility von Solaris.
Das vielleicht verbreitetste alternative Init System für Linux ist OpenRC vom Gentoo Projekt. Es wird unter anderen von den Linux Distributionen Gentoo und Alpine Linux standardmässig eingesetzt, ausserdem auf dem FreeBSD-basierten GhostBSD. Bei Artix Linux, Devuan und Parabola kann es optional genutzt werden.
Runit ist unter den systemd-freien Distributionen ebenfalls sehr beliebt. Es ist sehr klein und gut auf verschiedene Unix-artige Systeme portierbar. Damit stellt es das genaue Gegenteil zu systemd dar. Es wird bei Void Linux standardmässig eingesetzt, ist aber auch auf Artix Linux und Devuan verfügbar.
Mit Shepherd hat auch das GNU Projekt sein eigenes Init System, dieses wird nur von GNUs eigener Distribution GNU Guix verwendet und unterstützt. Wer die Befehle von systemd gewohnt ist, sollte sich vielleicht Dinit anschauen, das mit dinitctl ziemlich ähnliche Befehle hat und auf Artix Linux genutzt werden kann.
Quellen:
- Bild: https://wiki.gentoo.org/wiki/Comparison_of_init_systems (Screenshot)
- https://de.wikipedia.org/wiki/Systemd
- https://www.devuan.org/os/init-freedom
- https://de.wikipedia.org/wiki/Upstart
- https://wiki.gentoo.org/wiki/Comparison_of_init_systems
- https://wiki.gentoo.org/wiki/OpenRC
- https://wiki.gentoo.org/wiki/OpenRC/Users
- http://smarden.org/runit/
- https://github.com/davmac314/dinit