Systemd Basics

Aus Xinux Wiki
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.