Systemd Basics: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| + | =Allgemein= | ||
*systemd ist eine Sammlung von Programmen, Hintergrundprogrammen (Daemons) und Bibliotheken für Linux-Systeme. | *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. | *Ihr zentraler Bestandteil ist der systemd init-Prozess, der als erster Prozess (Prozess-ID 1) zum Starten, Überwachen und Beenden weiterer Prozesse dient. | ||
| Zeile 5: | Zeile 6: | ||
*Es wird als freie Software unter der GNU Lesser General Public License (LGPL) veröffentlicht. | *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. | *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, durch mehr Parallelisierung 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. | ||
| + | *Um nicht, wie bei anderen zwar grundsätzlich auf Parallelisierung setzenden Systemen, anhand der in einem Modell erfassten wechselseitigen Abhängigkeiten der Prozesse teilweise noch mit Serialisierung zu arbeiten, werden die 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. | ||
| + | *Ä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. | ||
Version vom 18. September 2022, 12:06 Uhr
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, durch mehr Parallelisierung 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.
- Um nicht, wie bei anderen zwar grundsätzlich auf Parallelisierung setzenden Systemen, anhand der in einem Modell erfassten wechselseitigen Abhängigkeiten der Prozesse teilweise noch mit Serialisierung zu arbeiten, werden die 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.
- Ä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.