Systemd Basics
Zur Navigation springen
Zur Suche springen
Allgemein
- systemd ist eine Sammlung von Programmen, Hintergrundprogrammen (Daemons) und Bibliotheken für Linux-Systeme.
- Ihr zentraler Bestandteil ist der systemd init-Prozess, der als erster Prozess (Prozess-ID 1) zum Starten, Überwachen und Beenden weiterer Prozesse dient.
- Es bietet aber auch andere Systemkomponenten an, deren Bandbreite vom Booten ("systemd-boot") bis zum Logging ("journald") reichen.
- Systemd wurde von Lennart Poettering, Kay Sievers (Red Hat Inc.) und anderen in C programmiert
- Es wird als freie Software unter der GNU Lesser General Public License (LGPL) veröffentlicht.
- Der Name entspricht mit dem abschließenden „d“ dem für Daemons üblichen Namensschema: systemd ist der Daemon, der das System startet und betreut.
Technik
- Systemd ist abwärtskompatibel zu SysVinit-Skripten.
- Allerdings werden bewusst Features benutzt, die nur unter Linux zur Verfügung stehen, nicht aber auf anderen unixoiden Betriebssystemen.
- Es kann daher nur auf Systemen mit Linux-Kernel laufen.
- Es soll den gegenseitigen Abhängigkeiten von Prozessen besser gerecht werden.
- Dies wurde durch mehr Parallelisierung erreicht und soll zu einer besseren Auslastung beim Systemstart führen
- Somit weniger Verzögerungen verursachen als das ältere, klassische SysVinit.
- Grundlegendes Konzept dafür ist es, weitgehend alle Prozesse gleichzeitig zu starten.
- D-Bus-Verbindungen und Sockets zur Interprozesskommunikation schon vor dem Start des zugehörigen Dienstes bereitgestellt und vom Kernel eventuell auflaufende Nachrichten bis zur Bereitschaft des Dienstes gepuffert.
- Dies unterscheidet sich zu anderen auf Parallelisierung setzenden Systemen
- Ähnliches wird für Anfragen an Dateisysteme mittels autofs bewerkstelligt.
- Daneben kann es nur gelegentlich benötigte Dienste ereignisbasiert erst bei Bedarf starten und so beim Systemstart weniger Dienste starten.
- Damit nimmt es Aufgaben wahr, die bei klassischen Unix-Systemen von inetd übernommen werden.
- Weiterhin sollen alle Shell-Boot-Skripte durch deklarative Konfigurationsdateien ersetzt werden, in denen definiert wird, wie die jeweiligen Dienste gestartet werden.
- Diese Dateien sind in der Regel deutlich einfacher zu schreiben als init-Skripte und vermeiden den erheblichen Overhead von Shell-Skripten.