Drin


Im Unix-basierter Computer Betriebssysteme, drin (kurz für Initialisierung) ist die erste Prozess begann während Booten des Computersystems. Init ist a Dämon Prozess, der weiter läuft, bis das System heruntergefahren ist. Es ist das direkte oder indirekte Vorfahr von allen anderen Prozessen und nimmt automatisch alle an verwaiste Prozesse. Init wird von der gestartet Kernel während der Booten Prozess; a Kernel Panik wird auftreten, wenn der Kernel es nicht starten kann. Init wird normalerweise zugewiesen Prozesskennung 1.
In Unix -Systemen wie z. System III und System v, Die Gestaltung von Init hat sich von den Funktionen des Init in abweist Forschung Unix und sein BSD Derivate. Bis vor kurzem die meisten Linux -Verteilungen verwendete einen traditionellen Init, der mit System V etwas kompatibel war, während einige Verteilungen wie z. Slackware Verwenden Sie Startup-Skripte im BSD-Stil und andere wie Gentoo Haben Sie ihre eigenen individuellen Versionen.
Seitdem wurden mehrere zusätzliche Init -Implementierungen erstellt, die versucht haben, Designbeschränkungen in den herkömmlichen Versionen zu beheben. Diese beinhalten starten, das Service -Management -Einrichtung, systemd, Starte es und OpenRC.
Forschung im Stil des Unix-Stils/BSD-Stils
Forschung Unix Init führt die Initialisierung aus Shell-Skript befindet sich /etc/rc
,[1] dann startet Getty an Terminals unter der Kontrolle von /etc/ttys
.[2] Es gibt keine Runslevels; das /etc/rc
Die Datei bestimmt, welche Programme von init ausgeführt werden. Der Vorteil dieses Systems besteht darin, dass es einfach und einfach manuell bearbeiten kann. Neue Software, die dem System hinzugefügt wurde, müssen jedoch Änderungen an vorhandenen Dateien erfordern, die das Risiko für die Erzeugung eines unbootbaren Systems riskieren.
BSD Init war vor 4.3bsd wie bei der Init von Research Unix;[3][4] in 4.3bsdEs fügte Unterstützung für das Ausführen von a hinzu Fenstersystem wie zum Beispiel X auf grafischen Terminals unter Kontrolle von /etc/ttys
.[5][6] Um die Anforderung zum Bearbeiten zu entfernen /etc/rc
BSD-Varianten haben seit langem eine ortsspezifische Unterstützung unterstützt /etc/rc.local
Datei, die in einer Unterschale gegen Ende der Bootsequenz ausgeführt wird.
Ein vollständig modulares System wurde mit eingeführt mit Netbsd 1.5 und portiert auf Freebsd 5.0 und Nachfolger. Dieses System führt Skripte in der aus /etc/rc.d
Verzeichnis. Im Gegensatz zur Skriptreihenfolge von System V, die aus dem Dateinamen jedes Skripts abgeleitet wird, verwendet dieses System explizite Abhängigkeits -Tags, die in jedem Skript platziert sind.[7] Die Reihenfolge, in der Skripte ausgeführt werden RCORDER Dienstprogramm basierend auf den in diesen Tags angegebenen Anforderungen.
Sysv-Stil

Im Vergleich zu seinen Vorgängern, AT & T's UNIX -System III führte einen neuen Stil der Systemstartkonfiguration ein,[8] welche überlebten (mit Modifikationen) in UNIX -System v und wird daher als "Sysv-Stil init" bezeichnet.
Ein laufendes System V befindet sich zu jedem Zeitpunkt in einer der vorgegebenen Anzahl von Zuständen, so genannt Runlevels. Mindestens ein Runlevel ist der normale Betriebszustand des Systems. In der Regel stellen andere Runlevels den Einzelbenutzermodus (zur Reparatur eines fehlerhaften Systems), das Abschaltungsstillstand und verschiedene andere Zustände dar. Wenn Sie von einem Runlevel zum anderen wechseln, werden eine Reihe von Skripten pro Lauflevel ausgeführt, die normalerweise Dateisysteme montieren, starten oder stoppen Daemons, starten oder stoppen die X Fenstersystem, die Maschine herunterfahren usw.
Runlevels
Das Runlevels Beschreiben Sie in System V bestimmte Zustände einer Maschine, die durch die Prozesse und Dämonen gekennzeichnet sind, die in jedem von ihnen laufen. Im Allgemeinen gibt es sieben Runlevels, von denen drei Runlevels als "Standard" gelten, da sie für den Betrieb eines Systems wesentlich sind:
- 0. Schalte aus
- 1. Einzelbenutzermodus (auch bekannt als S oder s)
- 6. Neustart
Abgesehen von diesen Standards behandeln UNIX- und UNIX-ähnliche Systeme Runlevels etwas anders. Der gemeinsame Nenner, der /etc/inittab
Datei definiert, was jeder konfigurierte Runlevel in einem bestimmten System macht.
Standard Runlevels
Betriebssystem | Standard Runlevel |
---|---|
AIX | 2 |
Antix | 5 |
Gentoo Linux | 3[9] |
HP-UX | 3 (Konsole/Server/Multiuser) oder 4 (grafisch) |
Linux von Grund auf neu | 3 |
Slackware Linux | 3 |
Solaris / Illumos | 3[10] |
UNIX -System v Veröffentlichungen 3.x, 4.x | 2 |
Unixware 7.x | 3 |
Auf Linux -Verteilungen, die in der Tabelle auf der rechten Seite mit Runlevel 5 defasiert sind X Fenstersystemnormalerweise mit a Bildschirm Manager wie GDM oder Kdm. Allerdings die Solaris und Illumos Betriebssysteme reservieren in der Regel Runlevel 5, um die Maschine herunterzufahren und automatisch auszuführen.
In den meisten Systemen können alle Benutzer den aktuellen Runlevel mit beiden überprüfen Runlevel
oder Wer -r
Befehl.[11] Das Wurzel Der Benutzer ändert in der Regel das aktuelle Runlevel durch Ausführen der Telinit
oder drin
Befehle. Das /etc/inittab
Die Datei legt den Standard -Runlevel mit dem fest : initdefault:
Eintrag.
Auf UNIX -Systemen wird das Ändern des Runlevels erreicht, indem nur die fehlenden Dienste gestartet werden (da jede Ebene nur diejenigen definiert, die gestartet / gestoppt werden). Beispielsweise kann das Ändern eines Systems von Runlevel 3 auf 4 nur den lokalen X -Server starten. Zurück zu Runlevel 3, es würde wieder gestoppt werden.
Andere Implementierungen
Traditionell ist einer der wichtigsten Nachteile von Init, dass er seriell auf die Aufgaben beginnt und darauf wartet, dass jeder das Laden beendet, bevor er zum nächsten übergeht. Wenn Startprozesse enden Input-Output (I/O) Blockiert, kann dies zu langen Verzögerungen während des Bootes führen. Beschleunigung von E/O, z. Durch die Verwendung von SSDs kann die Verzögerungen verkürzt werden, es jedoch nicht die Hauptursache angeht.
Es wurden verschiedene Anstrengungen unternommen, um die traditionellen Init -Dämonen zu ersetzen, um diese und andere Designprobleme anzugehen, darunter:
- Bootskripte in Gobolinux
- Busybox-Init, geeignet zu Eingebettete Betriebssysteme, angestellt bei OpenWrt bevor es durch ersetzt wurde Procd
- Dinit, ein Service Manager und Init System.[12]
- Epoch, ein Single-Thread-Linux-Init-System, das sich auf Einfachheit und Servicemanagement konzentriert[13]
- Initng, ein vollständiger Austausch von Init, das so gestaltet wurde, dass sie asynchron gestartet werden
- starten, ein Ersatz für init in Darwin/Mac OS/iOS/tvos beginnen mit Mac OS X v10.4 (Es startet Systemstarter, um "RC.Local "- und Systemstarter-Prozesse im alten Stil auszuführen.)
- OpenRC, ein Prozess-Spawner, der systembereitete Init nutzt und gleichzeitig Prozessisolation, parallelisiertes Start und Serviceabhängigkeit bereitstellt; benutzt von Alpine Linux, Gentoo und seine Derivate und als Option in verfügbar Devuan und Artix Linux
- starte es, ein plattformübergreifender vollständiger Ersatz für init mit parallelen Diensten, der standardmäßig verwendet wird Void Linux[14]
- Sonne Service -Management -Einrichtung (SMF), eine vollständige Ersatz/Neugestaltung von Init von Grund auf in Illumos/Solaris Beginnend mit Solaris 10, wurde jedoch als einziger Service des ursprünglichen Systems V-Style Init gestartet
- Schäfer, das GNU Service- und Daemon-Manager, der eine asynchrone, abhängige Initialisierung bietet; geschrieben in Guile -Programm und soll während des normalen Systembetriebs interaktiv hackbar sein[15]
- S6, eine Software -Suite, die ein Init -System enthält. [16][17]
- systemd, eine Software -Suite, vollständiger Ersatz für Init in Linux, das einen Init -Daemon mit gleichzeitiger Start von Diensten, Servicemanager und anderen Funktionen enthält.
- Systemstarter, ein Prozess Spawner, der vom BSD-Stil init in in Init in gestartet wird Mac OS X vor Mac OS X v10.4
- Emporkömmling, ein vollständiger Austausch von Init, das so gestaltet wurde, dass sie asynchron starten. Eingeführt von Ubuntu und von ihnen bis 2014 verwendet. Es wurde auch in Fedora 9 verwendet,[18][19] Red Hat Enterprise Linux 6[20] und Google's Chrome OS.[21]
Ab Februar 2019[aktualisieren], systemd war angenommen Bei den meisten wichtigen Linux -Verteilungen.[22]
Siehe auch
- Betriebssystemdienstmanagement
- Sitzungsmanager -Subsystem - Ein Äquivalent in Windows NT
Verweise
- ^ Version 7 Unix Programmierer Handbuch - -
- ^ Version 7 Unix Programmierer Handbuch - -
- ^ 4.2bsd Systemmanager Handbuch - -
- ^ 4.2bsd Dateiformate Handbuch - -
- ^ 4.3bsd Systemmanager Handbuch - -
- ^ 4.3bsd Dateiformate Handbuch - -
- ^ Andrew Smallshaw (7. Dezember 2009). "UNIX- und Linux -Startskripte, Teil 2".
- ^ "init (8)". minnie.tuhs.org.
- ^ "Initscripts". Gentoo Linux -Dokumentation. Gentoo.org. 2014-12-13. Abgerufen 2020-12-08.
- ^ "Laufstufen". Oracle Solaris Administration: gemeinsame Aufgaben. Orakel.
- ^ "Unix Man Pages: Runlevel (8)". Unixhelp.ed.ac.uk. 1997-05-27. Archiviert von das Original Am 2014-07-14. Abgerufen 2014-07-12.
- ^ "Github - Davmac314 / Dinit: Service -Überwachung /" Init "System".
- ^ "Epoch Init System Homepage".
- ^ Void Linux Hauptseite
- ^ "The Shepherd - GNU -Projekt". Free Software Foundation, Inc.. Abgerufen 2016-01-16.
- ^ "S6: Warum eine andere Überwachung Suite".
- ^ "S6 Init System". Archiviert von das Original am 2021-09-13.
- ^ Fedora 14 akzeptierte Funktionen, 2010-07-13, abgerufen 2010-07-13
- ^ "Fedora vertieft Systemd auf F15". Linux Weekly News. 2010-09-14. Abgerufen 2010-09-17.
- ^ "Einsatz". Red Hat Enterprise Linux 6: Technische Notizen. roter Hut. Abgerufen 2013-12-31.
- ^ Softwarearchitektur: Chromium -OS -Designdokumente, abgerufen 25. Januar 2014
- ^ Sehen Systemd#Adoption
Externe Links
- FreeBSD Init Man Page
- Ein Papier, das die UNIX -Init -Schemata zusammenfasst (2007)
- Solaris Service Management Facility - QuickStart Guide Bei der Wayback -Maschine (Archiviert 31. Dezember 2005)
- Eine Geschichte moderner Init Systems (1992–2015)