Open Source im professionellen Einsatz

© Dmitriy Shironosov, 123RF

System-V-Init, BSD-Init, Upstart und Systemd

Konkurrenz am Start

Für das Starten von Systemdiensten ist das Init-System zuständig. Möchte der Admin es konfigurieren, begegnen ihm mittlerweile neben dem traditionellen System-V- und BSD-Init auch die modernen Upstart und Systemd. Eine Überlebenshilfe für die Praxis.

Die Anzahl der verfügbaren Linux-Distributionen ist immens – mehrere Hundert listet die Website Distrowatch auf. Diese Vielfalt sorgt dafür, dass jeder Anwender das spezielle Linux seiner Wahl findet. Dabei gab es lange trotz aller Unterschiedlichkeit eine gemeinsame Komponente: den Bootvorgang. Das System lädt und initialisiert den Kernel, entpackt eventuell eine Ramdisk und übergibt den weiteren Vorgang an das Programm Init. Es ist der Vater aller Prozesse, trägt die Prozess-ID 1 und startet direkt oder indirekt alle anderen Programme auf dem Linux-System.

Prinzipiell ist das heute immer noch so, aber am Ende der Ereigniskette steht nicht mehr notwendigerweise das altvertraute System-V- oder BSD-Init. Je nach Distribution begegnet der Linux-Anwender den neueren Lösungen Upstart oder Systemd. Sie erfordern vom Admin eine Portion Umdenken und Umlernen.

System-V-Init

Schon lange ist Init nicht mehr gleich Init. Auch wenn der Prozess stets »init« heißt, verbergen sich dahinter mehrere Varianten: die System-V- und die BSD-Implementierung. Beim System-V-Ansatz ist die Datei »/etc/inittab« der Dreh- und Angelpunkt. Hier legt der Admin fest, welche Prozesse der Init-Daemon beim Booten startet.

Ein wesentliches Merkmal des System-V-Init ist das Runlevel-Konzept. Der Linux-Anwender legt pro Runlevel fest, welche Prozesse Init starten oder stoppen soll. Man kann sagen, dass das Runlevel den Soll-Zustand des Betriebssystems charakterisiert. Bei System-V-Init stehen dem Admin zwei Möglichkeiten zur Verfügung, um einen Dienst unter die Kontrolle des Init-Daemon zu stellen. Der direkte Weg besteht darin, die Inittab anzupassen. Die allgemeine Syntax lautet:

ID:Runlevels:Aktion:Prozess

Die ID ist gewissermaßen ein Etikett für den Dienst und muss eindeutig sein. Auf alten Systemen sind hier maximal zwei Zeichen erlaubt, auf neueren sind vier möglich. Der nächste Punkt legt fest, in welchen Runlevels der Dienst laufen soll. Mit der Aktion legt der Anwender fest, wie Init den Dienst behandelt (siehe Tabelle 1). Der Eintrag »Prozess« spezifiziert schließlich die auszuführende Kommandozeile. Dieses Kommando startet Init beim Booten oder beim Neu-Einlesen der Konfiguration. Entfernt der Admin die Zeile wieder, stoppt der Init-Daemon den Prozess beim Neu-Einlesen seiner Konfigurationsdatei.

Init-Skripte

Das Verwalten von Diensten allein über die Inittab ist längst nicht mehr zeitgemäß. Das Runlevel-Konzept des System-V-Init erlaubt eine elegantere und auch besser automatisierbare Vorgehensweise. Pro Dienst existiert ein Shellskript im Verzeichnis »/etc/init.d/« . Das nicht ungefährliche Editieren der Konfigurationsdatei des Init-Daemon entfällt.

Wer ein Skript im Verzeichnis »/etc/init.d/« platziert, schafft zwar die Voraussetzungen für die Verwaltung durch Init, aktiviert diese aber nicht. Dazu fehlen die symbolischen Links in den entsprechenden Runlevel-Verzeichnissen »/etc/rcN.d/« . Dennoch kann der Admin das Skript über »/etc/init.d/myservice Aktion« testen. Gültige Aktionen sind in Tabelle 2 aufgelistet.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

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

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook