systemd ist ein System- und Sitzungs-Manager (Init-System), der für die Verwaltung aller auf dem System laufenden Dienste über die gesamte Betriebszeit des Rechners, vom Startvorgang bis zum Herunterfahren, zuständig ist. Prozesse werden dabei immer (soweit möglich) parallel gestartet, um den Bootvorgang möglichst kurz zu halten.
Bei Ubuntu ist es der zweite Ansatz, das in die Jahre gekommene Init-System SysVinit abzulösen. Während Canonical bis einschließlich Ubuntu 14.04 ausschließlich und exklusiv auf die Eigenentwicklung Upstart setzte, löst systemd dieses ab Ubuntu 14.10 nach und nach ab. Ab Ubuntu 15.04 ist es bei Ubuntu und den offiziellen Derivaten der Standard-Init-Dienst. Allerdings werden im Hintergrund viele Funktionen weiterhin an Upstart weitergereicht und auch Unity in der Version 7 benötigt noch Upstart. Wann Upstart endgültig aus Ubuntu entfernt wird, ist derzeit unbekannt.
Systemd wird über Dateien mit einem INI-Datei-ähnlichen Format konfiguriert. In der Terminologie von systemd sind dies "Units". Bei Ubuntu vorinstallierte Units sind im Ordner /lib/systemd/system/ gespeichert. Falls sich jedoch eine Unit mit gleichem Namen im Verzeichnis /etc/systemd/system/ befindet, so wird diese bevorzugt und jene unterhalb von /lib ignoriert. Damit hat man die Möglichkeit, eine Unit an eigene Gegebenheiten anzupassen, ohne dass man befürchten muss, dass sie bei einer Systemaktualisierung überschrieben wird. Es existieren verschiedene Typen von Units, die von systemd je nach Endung des Dateinamens unterschiedlich behandelt werden:
Typ | Beschreibung |
.device | Legt Gerätedateien an |
.mount | Ein- und Aushängen von Dateisystemen |
.path | Startet die Unit via inotify |
.network | Für die Konfiguration von Netzwerken via networkd |
.service | Für Dienste |
.socket | Stellt Verbindungen zwischen Prozessen her |
.target | Definiert eine Gruppe von Units |
.timer | Für wiederkehrende Aufgaben, ähnlich cron-Jobs |
.service-Dateien sind im Artikel Service Units beschrieben, .timer-Dateien im Artikel Timer Units.
Das Werkzeug, um systemd auf der Kommandozeile bzw. in einem Terminal [3] zu verwalten, hört auf den Namen systemctl. Die meisten Befehle greifen tief ins System ein und benötigen daher Root-Rechte. Diese werden bei Bedarf durch PolicyKit abgefragt. Man kann sie aber auch implizit durch ein vorangestelltes sudo gewähren.
systemctl ist im Detail im Artikel systemctl erläutert.
Mit Hilfe von systemd-inhibit kann verhindert werden, dass der Rechner heruntergefahren wird, in den Ruhezustand geht etc., wenn ein Prozess / Programm noch ausgeführt wird.
Im Paket systemd-ui (universe) ist das Programm systemadm enthalten, welches in einer grafischen Oberfläche die gestarteten systemd-Units auflistet. Über die Oberfläche ist aber kein Starten, Stoppen oder Modifizieren der Units möglich.
systemd schreibt Protokoll-Informationen in ein zentrales Journal. Dieses kann mit Hilfe von journalctl ausgelesen werden, mit Such- und Filter-Möglichkeit.
Die Unit, die sich für systemd um das Systemprotokoll ("logging") kümmert, ist im Artikel journald beschrieben.
Mit systemd-networkd besitzt systemd einen eigenen Netzwerkdaemon, welcher unter Ubuntu allerdings standardmäßig nicht aktiviert ist.
systemd besitzt mehrere Hilfsprogramme zur Analyse des Systems. Zwei davon sind systemd-analyze und systemd-path
Mit Hilfe von systemd-analyze kann der Startvorgang des Systems analysiert werden, woraus dann ggf. Optimierungen abgeleitet werden können. So kann das Programm z.B. ausgeben, welche systemd Unit wie lange zum Starten gebraucht hat. Weitere Information sind im Artikel zu systemd-analyze zu finden.
Mit Hilfe des Kommandozeilenbefehls[3] systemd-path
lässt sich feststellen, welche Verzeichnisse für was genutzt werden. So wird z.B. der Pfad zu den Konfigurationsdateien, den Log-Dateien und den Dateien, die zur Laufzeit des Systems angelegt werden, angegeben. Weitere Informationen sind in der Dokumentation zu finden.
Möchte man die Konfiguration bzw. bestimmte Konfigurationswerte ändern, so geschieht das in der Datei /etc/systemd/system.conf, welche dafür mit einem Editor mit Root-Rechten zu bearbeiten ist.
In der Datei sind alle Default-Konfigurationswerte von systemd hinterlegt, in Form von auskommentierten Einträgen. Zum Ändern eines Konfigurationspunkts ändert man einfach den entsprechenden Wert und entfernt das Kommentarzeichen, die Raute #
am Anfang der Zeile. Nach einem Neustart des Rechner läuft systemd mit der geänderten Konfiguration.
Eine vollständige Übersicht inklusive detaillierter Erklärung der Konfigurationspunkte ist in der Dokumentation von systemd zu finden, alternative auch in der entsprechenden Manpage namens systemd-system.conf
.
Probleme mit systemd und deren (mögliche) Lösung sind im Artikel systemd/Problembehebung aufgeführt.
Dienste - Wiki-Artikel zu Init-Systemen und dem Starten und Stoppen von Diensten
Artikelliste zu systemd hier im Wiki
Übersicht über alle Manpages zu systemd
systemd Wiki - Dokumentation
Systemd-Timer als Cron-Alternative - weitere Anwendungsmöglichkeiten, Blogbeitrag 08/2015
systemd - Eintrag im Arch Linux Wiki zu systemd
Systemd for Upstart users im englischsprachigen Ubuntu-Wiki
Losing graciously - Kommentar des Ubuntu-Gründers Mark Shuttleworth zur Ablösung von Upstart, 02/2014
Diese Revision wurde am 10. Januar 2017 21:35 von noisefloor erstellt.