AA_PO-25195-123RF-Peter_Bernik_123RF-Sprinter_zum_Start_bereit_.jpg

© Peter Bernik, 123RF

Das neue Init-System Systemd

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.

Beim Booten durchläuft Ihr Linux-Rechner mehrere Phasen, bis Sie schließlich den Loginmanager oder den Desktop (bei automatischer Anmeldung) Ihrer Distribution sehen. Zuerst startet das BIOS bzw. UEFI auf moderneren Systemen, um die Hardware zu erkennen. Danach nimmt der Bootloader den Dienst auf – bei den meisten Distributionen ist das Grub 2. Der Bootloader kümmert sich unter anderem um den Linux-Kernel und die Initial RAM Disk (Initrd). Erst nachdem beide Komponenten geladen sind, startet der erste "richtige" Prozess.

Bis vor Kurzem kümmerte sich SysVinit um das Einrichten der Distribution beim Booten. Das Init-System hatte die Aufgabe, weitere Dienste zu starten, z. B. das Netzwerk, den Druckdienst, den Mehrbenutzermodus, die grafische Arbeitsumgebung usw. Der erste Prozess führt traditionell das Programm /sbin/init aus, hat die PID (Prozess-ID, Prozessnummer) 1 und wird als "Init-Prozess" bezeichnet. In der Baumansicht der Prozesse (die in "Vater-Sohn"-Beziehungen zueinander stehen, wenn ein Prozess einen anderen gestartet hat) bildet der Init-Prozess die Wurzel [1] des Baums.

Höher, schneller, weiter

SysVinit gehört zum Unix-Betriebssystem System V ("System Five") von der Firma AT&T. Der Nachfolger von System III stammt aus dem Jahr 1983 – und genau so alt ist das Konzept des dazugehörigen Init-Systems, das die verschiedenen Linux-Distributionen bis vor Kurzem als Nachbau genutzt haben. Es kennt keine Abhängigkeiten, keine Events (Ereignisse) und hält sich beim Starten von Diensten strikt an die durch die so genannten Runlevel vorgegebene Reihenfolge. Zum Starten, Stoppen und Neustarten von Diensten nutzten die Systeme Shell-Skripte, die beispielsweise in /etc/init.d oder /etc/rc.d lagen und über symbolische Links den Runleveln zur Verfügung gestellt wurden. Dabei musste SysVinit jeweils warten, bis ein bestimmter Dienst fertig initialisiert war, bevor der nächste an die Reihe kam.

Das relativ starre Konzept sorgte dafür, dass der Rechnerstart einige Zeit in Anspruch nahm. Immer wieder versuchten einzelne Distributionen, neue Wege zu beschreiten, um den Vorgang zu beschleunigen. So führte Ubuntu im Jahr 2006 das ereignisorientierte Init-System Upstart [2] ein, und eine Weile sah es so aus, als würden auch andere Distributionen auf diesen Zug aufspringen: Fedora und OpenSuse stiegen zunächst auf den SysVinit-Nachfolger um. Dann aber kam das Jahr 2010, und die beiden Entwickler Lennart Poettering und Kay Sievers traten an, das Bootkonzept zu revolutionieren. Mit ihrer Erfindung Systemd [3] sorgten sie aber nicht nur für einen flotten Start, sondern warfen gleich eine ganze Reihe von altbewährten Methoden über Bord.

Der System- und Dienstemanager Systemd ist als eine Art eierlegende Wollmilchsau konzipiert. Er soll nicht nur alle gestarteten Dienste und Programme im Auge behalten, sich um das Einhängen (Mounten) von Dateisystemen und das Einrichten von Netzwerkverbindungen kümmern, sondern künftig z. B. auch die Uhrzeit synchronisieren und den Cron-Dienst ersetzen. Seit 2010 sind nach und nach fast alle großen Linux-Distributionen umgestiegen, und sogar Ubuntu hat das eigene Upstart-System zugunsten von Systemd aufgegeben. Für Sie als Benutzer ändert sich wenig – wenn Sie sich aber dafür interessieren, was unter der Haube läuft, geben die nächsten Abschnitte einen Überblick über die wichtigsten Funktionen.

Die neue Nummer 1

Der Systemd-Prozess erhält genau wie früher /sbin/init die PID 1; er ist damit die Wurzel des Prozessbaums. Wie die Vater-Sohn-Beziehungen der Prozesse aussehen, können Sie sich beispielsweise mit dem Kommando pstree anschauen, das Sie in ein Terminalfenster oder in eine der virtuellen Konsolen eingeben (Abbildung 1). Systemd aktiviert beim Booten zunächst nur Dienste, die unmittelbar benötigt werden – und zwar gleichzeitig. Das klingt anfangs etwas verwirrend: Schließlich kann ein Web- oder Mailserver nur dann richtig arbeiten, wenn das Netzwerk bereits eingerichtet ist.

Abbildung 1: Am Anfang steht nicht länger "init" – "systemd" ist jetzt die Nummer 1.

Damit nichts und niemand den Bootprozess blockiert, gaukelt Systemd den Diensten vor, dass alle benötigten Komponenten direkt vorhanden sind. Dazu richtet Systemd so genannte Sockets ein, welche die Prozesse zum Kommunizieren untereinander nutzen. Das passiert schon, bevor ein Dienst vollständig gestartet wurde. Systemd fängt Nachrichten über diese Sockets ab und speichert sie so lange zwischen, bis der benötigte Service tatsächlich läuft und selbst antworten kann. Das Ganze spart nicht nur Zeit, sondern hat einen praktischen Nebeneffekt: Systemd kontrolliert die Sockets weiter, bemerkt, wenn ein Service abgestürzt ist, und kann ihn ggf. neu starten. Ein Artikel in unserer Schwesterzeitschrift LinuxUser [4] beschreibt ausführlich, wie das Ganze funktioniert.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

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

Deutschland

Ähnliche Artikel

  • Durchstarten
    Beim Wettstreit zwischen dem klassischen Init und dem recht jungen Systemd trifft jahrzehntelang gewachsene Technik auf neue Konzepte.
  • Systemd als Schaltzentrale für das Linux-System
    Systemd polarisiert die Community – und hat zugleich das Zeug dazu, alte Gräben zu schließen und eine einheitliche Basis für Linux zu bilden.
  • 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.
  • Systemstart mit Systemd
    Einschalten, loslegen: Mit Systemd versucht eine Gruppe Entwickler die Revolution im Boot-Prozess. Ob der Turbo aber wirklich zündet, steht noch in den Sternen.
  • Schneller Booten dank Parallelisierung
    Lennart Poettering von Red Hats Desktop-Team hat auf dem Linuxtag seinen runderneuerten Linux-Systemstart mit Systemd vorgestellt. Zum Abschluss führte er auf seinem Laptop vor, wie schnell die Software tatsächlich ist.
Kommentare

Infos zur Publikation

EL 08-10/2017: BACKUP

Digitale Ausgabe: Preis € 9,80
(inkl. 19% MwSt.)

EasyLinux erscheint vierteljährlich und kostet 9,80 Euro. Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 33,30 Euro. Details dazu finden Sie im Computec-Shop.

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

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

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 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...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...