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 10/2016: Kryptographie

Digitale Ausgabe: Preis € 0,00
(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!

Aktuelle Fragen

zweites Bildschirm auf gleichem PC einrichten
H A, 30.09.2016 19:16, 2 Antworten
Hallo, ich habe Probleme mein zweites Bildschirm einzurichten.(Auf Debian Jessie mit Gnome) Ich...
Probleme mit MPC/MPD
Matthias Göhlen, 27.09.2016 13:39, 2 Antworten
Habe gerade mein erstes Raspi Projekt angefangen, typisches Einsteigerding: Vom Raspi 3B zum Radi...
Soundkarte wird erkannt, aber kein Ton
H A, 25.09.2016 01:37, 6 Antworten
Hallo, Ich weiß, dass es zu diesem Thema sehr oft Fragen gestellt wurden. Aber da ich ein Linu...
Scannen nur schwarz-weiß möglich
Werner Hahn, 20.09.2016 13:21, 2 Antworten
Canon Pixma MG5450S, Dell Latitude E6510, Betriebssyteme Ubuntu 16.04 und Windows 7. Der Canon-D...
Meteorit NB-7 startet nicht
Thomas Helbig, 13.09.2016 02:03, 4 Antworten
Verehrte Community Ich habe vor Kurzem einen Netbook-Oldie geschenkt bekommen. Beim Start ersch...