Was kommt nach SysVinit? Das wichtigste Programm in fast jeder Linux-Distribution ist der init-Daemon, meist zu finden unter /sbin/init. Es ist der erste Prozess, der nach der Initialisierung des Linux-Kernels gestartet wird. Dieser kümmert sich um alles, was für einen ordnungsgemäßen Systemstart notwendig ist, d.h. Dateisysteme mounten, Kernel Module nachladen und die verschiedene Dienste in der richtigen Reihenfolge starten. Viele Jahre sorgte SysVinit für die Umsetzung dieses Konzepts. Eine Ansammlung von Shell-Skripten und Programmen, die die Kompatibilität zum init-Daemon des in den 80iger Jahren entwickelten Unix System V (SysV) halten sollte. Nach und nach wuchsen jedoch die Anforderungen an die Startsysteme und die Suche nach neuen Konzepten bekam mehr Aufmerksamkeit. Andere Unix-Systeme wie Solaris oder Mac OS X zeigten die Umsetzbarkeit von neuen Möglichkeiten auf. Über die Jahre hinweg haben sich daher zahlreiche Alternativen im Linux-Umfeld entwickelt. Für Ubuntu wäre Upstart und für Fedora und OpenSuse systemd zu nennen. Jedoch eine definitive Aussage über ein distributionsübergreifendes System ist noch nicht in Sicht. Nützliche Anforderungen für heutige Systeme sind neben dem parallelen Starten von Diensten, die Reaktionen auf verschiedene Ereignisse (z.B. ein angesteckter Drucker), der Umgang mit Energiesparzuständen oder die Beschränkung von Systemresourcen von Prozessen. systemd verfügt über diese Features und noch vieles mehr. Generell werden Dinge, die von systemd von Interesse sind, als units bezeichnet. Dienste werden als service units bezeichnet und innerhalb einer Baumstruktur angeordnet und gruppiert. Daneben gibt es spezielle units für Dateisysteme, Sockets, Geräte oder Timer. Der Befehl systemctl dient als zentrales Interface. Hier kann nicht nur der Zustand des gesamten Systems angezeigt werden, sondern auch zentrale Eigenschaften festgelegt oder units für den Startvorgang aktiviert oder deaktiviert werden. Diese werden anhand ihrer beschriebenen Abhängigkeiten beim nächsten Systemstart automatisch gestartet. Über das klassische Starten und Beenden von Diensten hinaus bietet systemd sich als cgroup controller an. cgroups sind eine Erweiterung des Linux-Kernel zur Resourcenlimitierung und -steuerung. Damit wird es möglich Diensten Beschränkungen der CPU-Laufzeit, IO-Bandbreite oder des Speichers auf zu erlegen. Dies kann auch zur Laufzeit der Prozesse stattfinden. Als Letztes sei noch der mitgelieferte Dienst journald erwähnt. Dieser dient als Alternative zum Logging-Dienst syslogd und bietet mit dem Befehl journalctl ein mächtiges Instrument zur Begutachtung des Systemstatus und zur Fehlersuche. systemd kann viele der bisher gängigen eingesetzten Dienste ersetzen und erhält dabei die SysV- oder LSB-Kompatibilität. Es bringt vermehrt dynamische Konzepte mit ins Spiel und integriert Neuerungen im Linux-Umfeld der letzten Jahre. Für die weitere Lektüre sei auf folgende Punkte hingewiesen: - Dokumentation (http://www.freedesktop.org/wiki/Software/systemd/) - Quelltexte (http://cgit.freedesktop.org/systemd/) - Blog des Entwicklers Lennart Poettering (http://0pointer.de/blog/).