Init-System (von englisch „initialisation“, Initialisierung) ist der erste Prozess, den der Kernel nach dem Booten startet. Es hat die PID 1 und ist der Ursprung aller weiteren Prozesse des Systems: Es startet Dienste, überwacht sie und weist ihnen bei Bedarf Neustarts an. Auf modernen Linux-Systemen ist Systemd das Init-System der Wahl.
Die Aufgabe des Init-Systems
- Systemstart: Nach dem Laden des Kernels und der Gerätetreiber startet Init die restliche Umgebung — von der Dateisystem-Einbindung bis zur Anmeldemaske.
- Dienstverwaltung: Init startet Daemons und Dienste, deren Reihenfolge durch Abhängigkeiten bestimmt wird.
- Überwachung: Beendet sich ein Dienst unerwartet, startet das Init-System ihn automatisch neu; es verwaltet auch Runlevel beziehungsweise Ziele (Targets).
- Abschluss: Beim Herunterfahren stoppt Init alle Dienste in der richtigen Reihenfolge und hängt Dateisysteme sauber aus.
Von SysV-Init zu Systemd
Klassische Linux-Systeme nutzten SysV-Init: Dabei bestimmten nummerierte Startskripte in Verzeichnissen wie /etc/rc.d die Reihenfolge (S01, S02, S05 ...). Das war einfach, aber langsam und unflexibel. Moderne Distributionen setzen auf Systemd, das Dienste parallel startet, Abhängigkeiten deklariert, Socket-Aktivierung beherrscht und das Journal für Logs integriert. Weitere Init-Systeme sind OpenRC (Gentoo, Alpine) und runit (Void Linux).
Init und der Boot-Vorgang
Die Kette beginnt mit dem Bootloader (etwa GRUB), der den Kernel lädt. Der Kernel initialisiert die Hardware und startet dann das Init-System als ersten Benutzerprozess. Alle späteren Prozesse — auch die Shell des angemeldeten Benutzers — stammen direkt oder indirekt von Init ab.
Praxis
Mit dem Befehl ps -p 1 lässt sich auf jedem Linux-System das aktive Init-System anzeigen. Bei Systemd erscheint /sbin/init als Symlink auf systemd. Auch in Containern existiert das Konzept: Ein minimales Init-System (etwa tini) sorgt dort dafür, dass Signale korrekt an den Hauptprozess weitergeleitet werden.