Der Kernel startet den ersten Userspace-Prozess mit PID 1 in einem PID-Namespace. Auf einem vollständigen Linux-System richtet dieser Init-Prozess die Dienstumgebung ein. In einem Container kann PID 1 stattdessen ein kleiner Init-Wrapper oder die Anwendung selbst sein, trägt aber weiterhin besondere Verantwortung für Signale und das Aufräumen von Kindprozessen.
System booten · Lektion 5
Bootvorgang: Init
Lerne, wie PID 1 den Userspace initialisiert, Dienste überwacht, Kindprozesse aufräumt und das Herunterfahren koordiniert.
Aufgaben von PID 1
Ein Init-System übernimmt häufig folgende Aufgaben:
- Dienste, Anmeldungen, Einhängungen und andere Arbeitseinheiten starten und überwachen
- Arbeit anhand von Abhängigkeiten und dem konfigurierten Zielzustand anordnen
- verwaiste Kindprozesse übernehmen und aufräumen
- gemäß einer Richtlinie auf Dienstausfälle reagieren
- geordnetes Herunterfahren und Neustarten koordinieren
Die genaue Abgrenzung unterscheidet sich. Geräteverwaltung, Netzwerk, Protokollierung und geplante Aufgaben können getrennte, von Init überwachte Programme sein, statt direkt in PID 1 eingebaut zu sein.
Welche Aufgabe ist für PID 1 in seinem PID-Namespace besonders?
System V init und Runlevel
Das traditionelle sysvinit verwendet Konfigurationen wie /etc/inittab sowie runlevelspezifische Start- und Stoppskripte. Ein Runlevel steht für einen Betriebsmodus, wobei sich die Bedeutung nummerierter Level zwischen Distributionen unterscheiden kann. Die Reihenfolge der Skripte folgt Konventionen und kann durch Distributionswerkzeuge erweitert oder parallelisiert werden.
Schließe nicht allein aus der Existenz von /etc/init.d/ auf das aktive Init-System eines Hosts. Kompatibilitätsskripte können auf Systemen erhalten bleiben, deren PID 1 eine andere Implementierung ist.
Wofür steht ein System-V-Runlevel?
Ereignis- und abhängigkeitsbasierte Systeme
Upstart führte ein ereignisgesteuertes Jobmodell ein und wurde von älteren Ubuntu-Versionen sowie einigen anderen Systemen verwendet. Heute ist es hauptsächlich historisch oder für den Betrieb älterer Systeme relevant.
systemd wird von vielen aktuellen Allzweckdistributionen eingesetzt. Es bildet Dienste, Sockets, Einhängungen, Timer, Geräte, Targets und andere Ressourcen als Units ab. Deklarative Abhängigkeiten und Aktivierungsmechanismen lassen unabhängige Arbeit gleichzeitig ablaufen und bewahren dabei die erforderliche Reihenfolge.
Weitere aktive Init- und Überwachungsansätze sind OpenRC, runit, s6 und BusyBox init. „Am neuesten“ ist keine sinnvolle Kompatibilitätsregel. Ermittle, was das konkrete System ausführt, und verwende dessen Dokumentation.
Wie stellt systemd verwaltete Ressourcen wie Dienste und Einhängungen dar?
Das laufende Init-System bestimmen
Prüfe PID 1, statt anhand installierter Dateien zu raten:
$ ps -p 1 -o pid,comm,args=
$ readlink /proc/1/exe
Berechtigungen, Container und Namespaces beeinflussen, was du siehst. Ein in einem Container ausgeführter Befehl zeigt PID 1 dieses Namespace und nicht zwangsläufig das Init-System des Hosts. Verwende nach der Bestimmung dessen eigene Status- und Protokollwerkzeuge, statt Befehle verschiedener Init-Familien zu vermischen.
Warum ist die Prüfung von PID 1 aussagekräftiger als die Suche nach einem Verzeichnis mit älteren Skripten?
Lektion abgeschlossen
Sie haben Bootvorgang: Init abgeschlossen
Du kannst Init nun als Rolle erklären, statt es mit einer zwingenden Implementierung gleichzusetzen.
Ordne PID 1 die Dienstinitialisierung, das Aufräumen von Kindprozessen und das Herunterfahren zu.
Erkenne System-V-Runlevel als von der Distribution definierte Betriebsmodi.
Ordne systemd-Ressourcen und -Abhängigkeiten Units zu.
Prüfe vor der Auswahl von Werkzeugen die tatsächlich laufende PID 1 im relevanten Namespace.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen