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 08/2016: Multimedia

Digitale Ausgabe: Preis € 5,99
(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

Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...
Probleme beim Hochfahren der Terastaion 5400 mit Unix-Distrib
Sheldon Cooper, 10.07.2016 09:32, 0 Antworten
Hallo ihr lieben, habe seit zwei Tagen das Problem, das das NAS (Raid5) nicht mehr sauber hoch...
Mit Firewire Videos improtieren?
Werner Hahn, 09.06.2016 11:06, 5 Antworten
Ich besitze den Camcorder Panasonic NV-GS330, bei dem die Videos in guter Qualität nur über den 4...
lidl internetstick für linux mint
rolf meyer, 04.06.2016 14:17, 3 Antworten
hallo zusammen ich benötige eure hilfe habe einen lidl-internetstick möchte ihn auf linux mint i...