WikiDer > Init

init

Auf Unix-basierte Betriebssysteme ist drin (kurz für Initialisierung) die erste Prozess die während des Bootvorgangs gestartet wird. Init ist ein Dämon die so lange läuft, bis das System heruntergefahren wird. Init ordnet den Start von Prozessen in der richtigen Reihenfolge an, sodass ein funktionierendes, gebootetes Computersystem erhalten wird. Dies wird durch das Starten von Skripten oder die Verwendung von Diensten erreicht. Shell-Skripte und Dienste sind Dateien mit Anweisungen, welche Prozesse gestartet werden sollen. Bei Diensten legt sie fest, was zum Starten des Prozesses erforderlich ist (z. B. a Netzwerkverbindung).

Init ist das direkte oder indirekte Elternteil aller anderen gestarteten Prozesse. Auch Prozesse, die kein direktes Elternteil mehr haben ("Zombie-Prozesse") werden automatisch unter init im Baumstruktur von Prozessen. Init wird gestartet vom Kernel mit festem Dateinamen. Wenn der Init-Prozess vom Kernel nicht gestartet werden kann, dann a Kernel-Panik (Absturz) auftreten. Init erhält oft die Prozesskennung (PID) 1.

Traditionelle Init-Systeme

In Unix-Systemen wie System III und System V unterscheiden sich Design und Funktionalität von init init Forschungsunix und BSD-Derivate. Die traditionellen Init-Systeme für Linux sind einigermaßen kompatibel mit System V. Einige Distributionen wie Slackware Verwenden Sie BSD-ähnliche Startskripte und andere wie Gentoo-Linux dann eigene Versionen verwenden (OpenRC für Gentoo).

Bedarf an alternativen init-Implementierungen

Mehrere alternative init-Implementierungen wurden entwickelt, um Designprobleme in Standardversionen zu lösen. Einige Designprobleme:

  • Netzwerk: Es werden Prozesse gestartet, die eine Netzwerkverbindung benötigen, aber noch keine Netzwerkverbindung vorhanden ist.
  • Synchroner Start: Herkömmliche Init-Systeme starten normalerweise alle Prozesse nacheinander, während es schneller ist, mehrere Prozesse gleichzeitig zu starten (aufgrund von Festplattenzugriff, Prozessorlast und Netzwerkbeschränkungen).
  • Boot-Geschwindigkeit der Shell-Umgebung: Die Geschwindigkeit, mit der bash (oder jede andere Shell) boot ist nicht zu vernachlässigen, wenn mehrere Skripte ausgeführt werden müssen.
  • Unklarheit: Eine Kombination von Skripten, die in einer bestimmten Reihenfolge gestartet werden müssen, sind schwieriger zu warten als servicebasierte Lösungen, bei denen das Init-System die Abhängigkeiten übernimmt.

Um diese Nachteile zu überwinden, wurden alternative Init-Systeme entwickelt. Beispiele für alternative Init-Systeme werden eingeführt (Apfel für OS X), die Service Management Facility (Sonne vor dem Solaris), systemd (für Linux) und Emporkömmling (Kanonisch vor dem Ubuntu). Anno 2016 wird von den meisten systematisiert Linux-Distributionen verwendet, obwohl es umstritten bleibt (siehe den Artikel von systemd).

Ersetzungen für init

  • BootScripts, verwendet von GoboLinux.
  • busybox-init, passend für eingebettete Anwendungen. OpenWrt verwendet, bevor Sie zu procd wechseln.
  • DÄMONEN, eine Modifikation des in KahelOS verwendeten Init-Prozesses, bei dem Daemons nur gestartet werden, wenn die Desktop-Umgebung gestartet wird.
  • eINIT, ein vollständiger Ersatz für init, der Prozesse asynchron startet, aber keine Shell-Skripte erfordert.
  • Epoche, ein Singlethread-Init-System für Linux. Der Fokus liegt auf Einfachheit und Service-Management.
  • Initng, ein vollständiger Ersatz von init, der Prozesse asynchron startet
  • startd, ein Ersatz für init in Darwin OS/OS X/iOS/TVOS von Mac OS X 10.4 (es startet auch SystemStarter, um alte 'rc.local'- und SystemStarter-Prozesse zu starten)
  • Mudur, ein Ersatz für init geschrieben in Python die Prozesse asynchron startet. Wird von Pardus verwendet.
  • Leckereien, eine Sammlung von Systemtools zum Initialisieren und Ausführen eines BSD- oder Linux-Systems. Verwaltet Daemons, Terminals und Protokollierung.
  • OpenRC, ein Prozessstartprogramm, das ein bereitgestelltes Init-System zum Booten verwendet. Bietet Prozessisolierung, parallelen Start und Dienstabhängigkeit. Wird auf Gentoo und Derivaten verwendet.
  • Prozess, ein OpenWrt-Prozessmanager, geschrieben in C. Verwendet Init-Skripte (über ubus-Aufrufe). Doppelte Anforderungen zum Starten oder Neustarten eines Dienstes werden ignoriert, wenn sich die Umgebung und Konfiguration nicht geändert haben.[1]
  • starte es, ein Multiplattform-Init-System, das parallele Startdienste bereitstellt. Wird in Void-Linux verwendet.
  • s6, ein Multiplattform-Init-System, ähnlich wie runit
  • Service-Management-Einrichtung, ein kompletter Ersatz und ein Redesign von init. Wird in Illumos/Solaris ab Solaris 10 verwendet. Das traditionelle Init-System (System V-Stil) startet die Service Management Facility als einzigen Dienst.
  • Schäfer (ehemals dmd), ein Ersatz für init von GNU das hat eine Dienstabhängigkeit.
  • systemd, ein vollständiger Ersatz für init in Linux mit gleichzeitigem Dienststart. Wird von gängigen Linux-Distributionen verwendet.
  • Systemstarter, ein Prozessstarter, der von einem BSD-artigen Init für Mac OS X 10.4 gestartet wird.
  • Emporkömmling, ein vollständiger Ersatz für init, der Prozesse asynchron startet. Von Canonical entwickelt und in Ubuntu und Derivaten verwendet, bis es durch systemd ersetzt wird.

Externe Links