Linux-System ist ein weit verbreitetes Open-Source-Betriebssystem mit leistungsstarken Funktionen und flexibler Konfiguration. Haben Sie jedoch schon einmal darüber nachgedacht, wie das Linux-System nach und nach aus der Dunkelheit heraus startet, wenn Sie den Netzschalter drücken? Der Startvorgang des Linux-Systemstarts ist ein komplexer und heikler Prozess, der mehrere Ebenen und Komponenten wie Hardware, Firmware, Bootloader, Kernel und Benutzerbereich umfasst. In diesem Artikel wird der Startvorgang des Linux-Systemstarts detailliert analysiert, einschließlich BIOS, MBR, GRUB, initrd, init usw.
1) Der erste Schritt ist der Firmware-Selbsttest, der hauptsächlich einen CMOS/BIOS-POST-Einschalt-Selbsttest der Hardware durchführt, um zu überprüfen, ob die Hardware auf physischer Ebene normal ist. Überprüfen Sie beispielsweise, ob die Festplatte richtig eingesteckt ist usw.
2) Der zweite Schritt besteht darin, den BootLoader des MBR auf der Festplatte und das selbststartende Programm auszulesen. Das unter Linux häufig verwendete selbststartende Programm ist GRUB. Die Hauptfunktion dieses Schritts besteht darin, den Kernel zu laden. Der Kernel wird im /boot-Verzeichnis gespeichert
3) Der dritte Schritt ist das Laden des Kernels,
Die Hauptfunktionen sind: 1. Die Laufwerkshardware enthält eine große Anzahl von Treibern. 2. Starten Sie den Init-Prozess.
4) Der Init-Prozess liest hauptsächlich die Datei /etc/inittab und führt die Standardausführungsebene aus, um mit dem Booten fortzufahren. Es ist zu beachten, dass die PID von init immer 1 ist, was der übergeordnete Prozess aller Prozesse ist, während der Hintergrundprozess des init-Prozesses 0 ist, was der Kernel-Scheduler ist.
5)/etc/inittab definiert Initialisierungsvorgänge.
Das Hauptformat des Befehls ist: id: runlevels: action: process
Darunter, wie im roten Kästchen im Bild oben gezeigt
1. Es gibt 7 Runlevel, 0-6 sind wie folgt:
0 —— Herunterfahren stoppen
1 – Einzelbenutzermodus Einzelbenutzermodus
2 – Mehrbenutzer, ohneNFS-Mehrbenutzermodus, aber ohne Netzwerk (Textmodus)
3 – Vollständiger Mehrbenutzermodus Vollständiger Mehrbenutzermodus (Textmodus)
4——unbenutzt reserviert
5——X11 grafischer Mehrbenutzermodus
6——Neustart
Sie können entsprechend diesen 7 Laufstufen wechseln
Die Befehle sind: aktuelle Laufebene anzeigen #runlevel, Laufebene wechseln #init[0 |1 |2 |3 |4 |5 |6]
1 initdefault: Geben Sie die Standard-Startebene des Systems an, wie im Bild oben markiert, die normalerweise für Reparaturen verwendet wird. Wenn wir beispielsweise in den Einzelbenutzermodus wechseln möchten, können wir ihn auf 1 setzen. Wir können die nicht festlegen Der Standardwert ist 0 oder 6, andernfalls kann es nicht gestartet werden.
2sysinit: Das System beginnt mit der Ausführung des im Prozess angegebenen Befehls
Aus dem Inhalt der inittab-Datei ist ersichtlich, dass keine Ausführungsebene festgelegt ist, was bedeutet, dass /etc/rc.d/rc.sysinit unabhängig von der Ausführungsebene ausgeführt wird
6) initdefault liest, wie in Schritt 5 erwähnt, hauptsächlich die Informationen in /etc/inittab, um die Standardausführungsebene zu bestimmen.
7)/etc/rc.d/rc.sysinit
Führen Sie den Befehl bis Zeile 21 in der Inittab-Datei aus, um das Skript zu starten. Schließen Sie den Start des Systemdienstprogramms ab, z. B. Festlegen von Systemumgebungsvariablen, Einstellen der Systemuhr, Laden von Schriftarten, Überprüfen des geladenen Dateisystems, Generieren von Protokolldateien mit Systemstartinformationen usw. Da es sich um einen Basisdienst handelt, ist sein Runlevel auf „leer“ gesetzt, also auf eine beliebige Ebene, und die Aktion ist auf „sysinit“ gesetzt. Das heißt, das Skript muss auf jeder Ausführungsebene gestartet werden, um den Start des Basisdienstes abzuschließen
8) Nachdem der Basisdienst gestartet ist, wird das Skript /etc/rc.d/rc ausgeführt
Nach dem Laden des Basisdienstes müssen Sie das entsprechende Verzeichnis entsprechend den verschiedenen Ausführungsebenen starten. Sein Arbeitsprinzip besteht darin, zunächst die Standardausführungsebene des Systems zu bestimmen, die sich in Schritt 6 befindet, und dann den entsprechenden rcN auszuführen Das Dienststartskript im d-Verzeichnis ist wie in der Abbildung gezeigt
9) Führen Sie das Dienststartskript im Verzeichnis /etc/rc.d/rcN.d aus
Sehen Sie sich den Inhalt dieses Verzeichnisses an:
wobei S das zu startende Skript und K das zu schließende Skript darstellt
Die Zahlen geben die Startreihenfolge an, wobei kleineren Werten hauptsächlich für die Verwaltung einiger Dienste Priorität eingeräumt wird
In diesem Schritt müssen Sie das Verzeichnis /etc/rc.d/init.d erklären. Die in diesem Verzeichnis abgelegten Skripte sind echte Skripte, während die in rcN.d abgelegten Skripte Softlinks im Verzeichnis init.d sind Mit anderen Worten: Alle Dateien in rcN.d müssen irgendwann das eigentliche Skript in init.d finden
Schauen Sie sich die konkreten Details an:
Als letztes ist zu beachten, dass die Idee des Startvorgangs von LINUX ungefähr dieselbe ist, die Details jedoch aufgrund von Versionsproblemen im Namen oder Speicherort der Konfigurationsdatei unterschiedlich sind Version, die Ubuntu-Version jedoch nicht. Wenn Sie interessiert sind, können Sie dieser Idee folgen, um sie zu erkunden.
Der Vorgänger von GNU GRUB ist Grand Unified Bootloader. Es wird hauptsächlich in Unix-ähnlichen Systemen verwendet; wie die meisten Linux-Distributionen verwenden auch GNU-Systeme GNU GRUB als Launcher. Ab Version 10 1/06 verwendet Solaris auch GNU GRUB als Launcher auf x86-Systemen.
GRUB ist dynamisch konfigurierbar; es lädt Konfigurationsinformationen beim Start und ermöglicht Änderungen beim Start, z. B. die Auswahl eines anderen Kernels und einer anderen Initrd. Zu diesem Zweck stellt GRUB eine einfache Bash-ähnliche Befehlszeilenschnittstelle zur Verfügung, die es Benutzern ermöglicht, neue Startsequenzen zu schreiben.
GRUB ist sehr leicht. Es unterstützt eine Vielzahl ausführbarer Formate; es ist nicht nur auf Betriebssysteme anwendbar, die Multi-Boot unterstützen, sondern unterstützt auch Betriebssysteme wie Windows und OS/2, die Multi-Boot über die Chain-Boot-Funktion nicht unterstützen. GRUB unterstützt alle Unix-Dateisysteme sowie FAT- und NTFS-Dateisysteme für Windows und unterstützt auch den LBA-Modus. Mit GRUB können Benutzer den Inhalt von Dateien in den unterstützten Dateisystemen anzeigen.
GRUB verfügt über eine Vielzahl von Benutzeroberflächen. Die meisten Linux-Distributionen nutzen die GRUB-Unterstützung für grafische Oberflächen, um benutzerdefinierte Startmenüs mit Hintergrundmustern bereitzustellen, und unterstützen manchmal auch die Maus. Durch Festlegen der GRUB-Textschnittstelle kann der Remote-Terminal-Start über die serielle Schnittstelle erfolgen.
GRUB kann Betriebssystem-Images aus dem Internet herunterladen und so Systeme ohne Festplatte unterstützen. GRUB unterstützt das Dekomprimieren des Betriebssystem-Images vor dem Booten.
Im Gegensatz zu anderen Launchern kann GRUB direkt über die GRUB-Eingabeaufforderung mit Benutzern interagieren. Geben Sie vor dem Laden des Betriebssystems die Taste „c“ im GRUB-Textmodusbildschirm ein, um die GRUB-Befehlszeile aufzurufen. Auf Systemen ohne Betriebssystem oder mit einem Betriebssystem aber keiner „menu.lst“-Datei können Sie auch die GRUB-Eingabeaufforderung eingeben. Mit der GRUB-Eingabeaufforderung können Benutzer jedes Betriebssystem manuell über Bash-ähnliche Befehle starten. Notieren Sie die entsprechenden Befehle in der Datei „menu.lst“, um ein Betriebssystem automatisch zu starten.
GRUB verfügt über eine Fülle von Terminalbefehlen. Mit diesen Befehlen über die Befehlszeile können Benutzer Details zur Festplattenpartition anzeigen, Partitionseinstellungen ändern, die Festplattenreihenfolge vorübergehend neu zuordnen, von jeder benutzerdefinierten Konfigurationsdatei booten und von der GRUB-Konfiguration unterstützte Dateien anzeigen anderer Trägerraketen im System. Daher ist es möglich, ein Betriebssystem von einem externen Gerät zu starten, ohne zu wissen, was auf einem Computer installiert ist.
GRUB verwendet einen Scrollbildschirm, um das Betriebssystem auszuwählen, das Sie starten möchten. Durch das Hinzufügen relevanter Informationen zur Datei „menu.lst“ kann GRUB 150 oder mehr Startoptionen steuern, die beim Start mit den Pfeiltasten ausgewählt werden können.
Mit Chain Boot kann ein Launcher einen anderen Launcher starten. GRUB kann von DOS-, Windows-, Linux-, BSD- und Solaris-Systemen mit 2 bis 3 Befehlszeilen gestartet werden.
Obwohl GRUB für Unix-ähnliche Systeme kompiliert und verpackt ist, gibt es GRUB auch für DOS und Windows. GRUB kann auch als isoliertes System ohne Betriebssystem installiert werden. Für die Verwendung von GRUB ist 1 Datei beim Booten von einer CD und 2 Dateien beim Booten von einer Diskette, Festplatte oder einem USB-Gerät erforderlich. Diese Dateien sind auf jeder Linux-CD zu finden, die GRUB unterstützt, und Benutzer können sie leicht finden.
Dieser Artikel analysiert detailliert den Startvorgang des Linux-Systemstarts, einschließlich BIOS, MBR, GRUB, initrd, init usw. Durch das Verständnis und die Beherrschung dieses Wissens können wir das Innenleben des Linux-Systems besser verstehen und so das Linux-System besser nutzen und optimieren. Natürlich gibt es viele Details und Änderungen im Startvorgang des Linux-Systemstarts, die von uns ein weiteres Lernen und Erkunden erfordern.
Das obige ist der detaillierte Inhalt vonAnalysieren Sie den Startvorgang des Linux-Systemstarts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!