Big Brother

Stürzt ein lebenswichtiger Dienst ab, sollte Systemd ihn möglichst schnell neu starten. Da sich jedoch ein Dienst selbst zu klonen vermag und bei Bedarf weitere Programme startet, fiel es in der Vergangenheit schwer, dessen endgültiges Ableben festzustellen.

Systemd löst das Problem recht elegant mit Hilfe der relativ neuen Control Groups, kurz Cgroups des Linux-Kernels. Mit diesen fasst das Betriebssystem Programme oder genauer gesagt Prozesse zusammen. Systemd sperrt nun jeden von ihm gestarteten Dienst in eine solche Gruppe. Sollte der Dienst weitere Programme aktivieren oder Kopien von sich selbst erstellen (forken), wie es beispielsweise Webserver oder SSH-Daemons tun, landen die Kind-Prozesse in der gleichen Gruppe. Befindet sich kein aktiver Prozess mehr in einer Gruppe, gilt der Dienst als abgestürzt oder beendet. Systemd startet ihn dann neu.

Der Systemd kümmert sich aber nicht nur um Dienste, sondern hängt bei Bedarf Partitionen ein und prüft sie auf Fehler. Damit diese zeitaufwendigen Aufgaben wieder nebenbei und parallel zum Start aller Dienste passieren, greift Systemd hier auf die Hilfe von Autofs [3] zurück: Versucht ein Programm in ein noch nicht verfügbares Device zu speichern, puffert der Kernel die Anfrage. Sobald das Dateisystem schließlich bereit steht, gibt er die Daten weiter.

Dieses Prinzip ermöglicht es, zum Beispiel die Home-Partition im Netzwerk via Samba freizugeben, obwohl Fsck sie gerade noch auf Fehler prüft. Ergänzend überwacht Systemd einzelne Verzeichnisse und sobald ein Programm darauf zugreift, hängt er automatisch das passende Dateisystem ein.

Muschelersatz

Die meisten Distributionen starten bislang die einzelnen Dienste via Shell-Skript. Das Starten von externen Programmen und Subshells schluckt allerdings extrem viel Rechenzeit. Darüber hinaus nutzen viele Skripte rekursive Konstrukte sowie redundante Befehle, sind fehleranfällig und irgendwann schwierig zu warten. Daher sind Poettering sämtliche Skripte ein Dorn im Auge, weshalb er sie bei der Arbeit an Systemd konsequent vermieden hat.

Die Maintainer sollen die Funktionen der Skripte durch richtige, vorzugsweise in C geschriebene und somit schnell ablaufende Programme ersetzen oder in die Daemons selbst integrieren. Einige besonders wichtige und gebräuchliche Funktionen übernimmt Systemd selbst.

Derzeit vermag er unter anderem den Hostnamen zu setzen (also den Namen des Computers), sich wie erwähnt um das Mounten der Dateisysteme kümmern und die Sprache einstellen (System Locale). Die diesbezüglichen Einstellungen liest Systemd aus den bekannten Konfigurationsdateien – zumindest fast.

In einigen Fällen nutzen die Distributionen nämlich unterschiedliche Dateien. Der Name des Systems liegt beispielsweise unter Fedora in /etc/sysconfig/network, OpenSuse benutzt /etc/HOSTNAME und Debian wiederum /etc/hostname. In solchen Fällen haben sich die Systemd-Macher für eine Datei entschieden. Den Hostnamen erwartet Systemd beispielsweise in /etc/hostname. Auf diese Weise versuchen die Systemd-Entwickler die Distributionen durch die Hintertür weiter zu standardisieren.

Die Tabelle "Wichtige Verzeichnisse und Konfigurationsdateien" zeigt einen kleinen Überblick über die wichtigsten Konfigurationsdateien und Verzeichnisse, die übrigens in Absprache mit den Distributoren entstanden sein sollen. Weitere Informationen hierzu liefert Lennart Poettering in seinem Blog [4].

Wichtige Verzeichnisse und Konfigurationsdateien

Datei Inhalt
/etc/hostname Hostname des Systems
/etc/vconsole.conf Tastaturbelegung und Schriftart der Konsole
/etc/locale.conf Spracheinstellungen (Locale)
/etc/modules-load.d/*.conf Kernel-Module, die das System beim Start lädt
/etc/sysctl.d/*.conf Konfiguration für Sysctl-Parameter
/etc/tmpfiles.d/*.conf Konfiguration für alle Dateien, die das System beim Start erstellen, entfernen oder aufräumen soll
/etc/binfmt.d/*.conf Konfiguration für Binärformate um Java-, Mono- und Wine-Programme direkt zu starten
/etc/os-release Name und weitere Informationen über die Distribution (Ersatz für /etc/fedora-release und ähnliche Dateien)
/etc/machine-id Die ID des Computers
/etc/machine-info (Meta-)Informationen über den Computer
/run Hier sollen Programme und Dienste temporäre Informationen ablegen, die in /tmp fehl am Platze wären. Dazu gehören beispielsweise Socket-Informationen oder Lock-Dateien. /run dient somit als Ersatz für /var/run, ist aber ein temporäres Verzeichnis (Stichwort tempfs).

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Systemstart
    Auf fast allen modernen Linux-Distributionen kümmert sich inzwischen Systemd um den Systemstart – und mehr. Wir erklären, wie die neue Schaltzentrale funktioniert.
  • Durchstarten
    Beim Wettstreit zwischen dem klassischen Init und dem recht jungen Systemd trifft jahrzehntelang gewachsene Technik auf neue Konzepte.
  • Die Neuerungen der Version 198

    Die frisch veröffentlichte Version bietet neben neuen Werkzeugen unter anderem auch die Möglichkeit, die Unit-Definitionen mit zusätzlichen Konfigurationsdateien zu überschreiben.
  • Upstart und Systemd im Vergleich
    Upstart und Systemd – gleich zwei neue Ansätze konkurrieren um die Pole-Position beim Linux-Start. Wir unterziehen die Kandidaten einem konzeptionellen Vergleich.
  • Neuerungen in Systemd

    Auf der Mailingliste hat Systemd-Entwickler Lennart Poettering Version 202 der Software angekündigt.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...