init
Vorlage:Begriffsklärungshinweis
Der init-Prozess (von initiieren) ist bei unixoiden Systemen der erste Prozess des Systems: Er hat meistens die Prozess-ID 1. Traditionell ist er direkter oder indirekter Vorfahre aller Prozesse und adoptiert automatisch alle verwaisten Prozesse. Auf welche Art er Prozesse startet, wird unter System-V-orientierten Systemen wie Solaris in der Datei /etc/inittab
festgelegt (SysVinit), unter den BSDs in der Datei /etc/ttys
.
Linux-basierte Betriebssysteme (der init-Prozess ist kein Teil des Linux-Kernels) verwenden traditionell ebenfalls den System-V-Daemon, seit 2011 begann die inzwischen weitreichende Verbreitung von systemd als Ersatz für den System-V-Daemon.
In Mac OS X (ab 2016 „macOS“) wurde er ab Version 10.4 „Tiger“ durch launchd ersetzt.
Auf heutigen Systemen werden durch den Kernel auch noch andere interne Prozesse gestartet, die Aussage gilt daher primär für Benutzerprozesse.
Den init-Prozess mit dem Kill-Kommando zu beenden (kill -9
), ist gleichbedeutend mit dem Herunterfahren des Systems. Will man während des laufenden Betriebs die Konfiguration wirkungsvoll ändern, muss nach dem Ändern der Konfigurationsdatei eingegeben werden:
kill -1 1
Unter den an System V orientierten Betriebssystemen verwaltet der init-Prozess die verschiedenen Runlevel; die BSDs kennen dagegen traditionell nur zwei Modi, single-user und multi-user.
Da das Starten von Prozessen mit Hilfe von init auf heutigen Systemen, mit im laufenden Betrieb wechselnder Hardware, nicht mehr ganz zeitgemäß ist, gibt es Versuche, Alternativen einzuführen. Beispiele sind hier InitNG, eINIT, Upstart von Ubuntu, launchd in macOS (ursprünglich „Mac OS X“) und systemd in Fedora. Mittlerweile kommt systemd auch in Debian und Ubuntu zum Einsatz und ersetzt dort SysVinit beziehungsweise Upstart, womit systemd in den am weitesten verbreiteten Linux-Distributionen zum Einsatz kommt.[1]
Beispiele von Init-Systemen
Asynchron: systemd | Upstart | InitNG | launchd | cinit | runit | Minit | Jinit | eINIT | s6 | SMF | sinit | GNU Shepherd
Synchron: SysVinit | OpenRC (asynchron optional über Konfiguration aktivierbar)