Ein grundlegender Leitfaden zum Linux-Bootvorgang

Jedes Mal, wenn Sie Ihren Linux-PC einschalten, durchläuft er eine Reihe von Phasen, bevor schließlich ein Anmeldebildschirm angezeigt wird, der nach Ihrem Benutzernamen oder Passwort fragt. Es gibt 4 verschiedene Phasen, die jede Linux-Distribution in einem typischen Bootvorgang durchläuft.

User Login Prompt

In diesem Leitfaden werden wir die verschiedenen Schritte beleuchten, die das Linux-Betriebssystem von dem Moment an unternimmt, in dem es eingeschaltet wird, bis zu dem Zeitpunkt, an dem Sie sich anmelden. Beachten Sie bitte, dass in diesem Leitfaden nur der GRUB2-Bootloader und der systemd-Init berücksichtigt werden, da sie derzeit von einer Vielzahl von modernen Linux-Distributionen verwendet werden.

Der Bootvorgang erfolgt in den folgenden 4 Schritten, die wir im Detail besprechen werden:

  • BIOS-Integritätsprüfung (POST)
  • Laden des Bootloaders (GRUB2)
  • Kernel-Initialisierung
  • Starten von systemd, dem Elternteil aller Prozesse

1. Die BIOS-Integritätsprüfung (POST)

Der Bootvorgang wird in der Regel initialisiert, wenn ein Benutzer die Ein-Taste drückt – wenn der PC bereits ausgeschaltet war – oder das System entweder über die GUI oder über die Befehlszeile neu startet.

Wenn das Linux-System hochfährt, tritt das BIOS (Basic Input Output System) in Aktion und führt einen Power On Self Test (POST) durch. Dies ist eine Integritätsprüfung, die zahlreiche Diagnosechecks durchführt.

Der POST überprüft die Hardwarefunktionalität von Komponenten wie der Festplatte (HDD) oder SSD, der Tastatur, dem RAM, den USB-Anschlüssen und jedem anderen Hardwareteil. Wenn ein Hardwaregerät nicht erkannt wird oder wenn es zu einer Fehlfunktion in einem der Geräte kommt, wie z. B. einer beschädigten HDD oder SSD, wird eine Fehlermeldung auf dem Bildschirm angezeigt, die Ihr Eingreifen auffordert.

In einigen Fällen wird ein Piepton ertönen, insbesondere im Falle eines fehlenden RAM-Moduls. Wenn jedoch die erwartete Hardware vorhanden ist und wie erwartet funktioniert, wird der Startvorgang zum nächsten Schritt fortgesetzt.

2. Der Bootloader (GRUB2)

Sobald der POST abgeschlossen ist und die Küste frei ist, überprüft das BIOS den MBR (Master Boot Record) auf den Bootloader und die Informationen zur Datenträgerpartitionierung.

Der MBR ist ein 512-Byte-Code, der sich im ersten Sektor der Festplatte befindet, die normalerweise /dev/sda oder /dev/hda je nach Architektur Ihrer Festplatte ist. Beachten Sie jedoch, dass sich der MBR manchmal auf einem Live-USB oder einer DVD-Installation von Linux befinden kann.

Es gibt 3 Haupttypen von Bootloadern in Linux: LILO, GRUB und GRUB2. Der Bootloader GRUB2 ist der neueste und primäre Bootloader in modernen Linux-Distributionen und führt dazu, dass die anderen beiden, die mit der Zeit veraltet sind, ausgelassen werden.

GRUB2 steht für GRand Unified Bootloader Version 2. Sobald das BIOS den Grub2-Bootloader lokalisiert hat, führt es ihn aus und lädt ihn in den Hauptspeicher (RAM).

Das Grub2-Menü ermöglicht Ihnen verschiedene Aktionen. Es ermöglicht Ihnen die Auswahl der Linux-Kernel-Version, die Sie verwenden möchten. Wenn Sie Ihr System mehrmals aktualisiert haben, sehen Sie möglicherweise verschiedene Kernel-Versionen in der Liste. Darüber hinaus bietet es Ihnen die Möglichkeit, einige Kernel-Parameter durch Drücken einer Tastenkombination zu bearbeiten.

Select Kernel Version

Außerdem ermöglicht das Grub-Menü in einer Dual-Boot-Konfiguration, in der Sie mehrere OS-Installationen haben, die Auswahl des zu bootenden Betriebssystems. Die Grub2-Konfigurationsdatei ist die Datei /boot/grub2/grub2.cfg. Das Hauptziel von GRUB besteht darin, den Linux-Kernel in den Hauptspeicher zu laden.

3. Kernel-Initialisierung

Der Kernel ist das Herzstück eines jeden Linux-Systems. Er verbindet die Hardware des PCs mit den zugrunde liegenden Prozessen. Der Kernel steuert alle Prozesse auf Ihrem Linux-System. Sobald der ausgewählte Linux-Kernel vom Bootloader geladen wird, muss er sich aus seiner komprimierten Version selbst extrahieren, bevor er eine Aufgabe ausführt. Nach dem Selbstextrahieren bindet der ausgewählte Kernel das Stammdateisystem ein und initialisiert das /sbin/init-Programm, das allgemein als init bezeichnet wird.

Kernel Initialization Process

Init ist immer das erste Programm, das ausgeführt wird, und erhält die Prozess-ID oder PID 1. Es ist der Init-Prozess, der verschiedene Daemons startet und alle Partitionen einbindet, die in der Datei /etc/fstab angegeben sind.

Der Kernel bindet dann das initiale RAM-Disk-Image (initrd) ein, das ein temporäres Root-Dateisystem ist, bis das echte Root-Dateisystem eingebunden ist. Alle Kernel befinden sich im Verzeichnis /boot zusammen mit dem initialen RAM-Disk-Image.

4. Start von Systemd

Der Kernel lädt schließlich Systemd, das den alten SysV init ersetzt. Systemd ist die Mutter aller Linux-Prozesse und verwaltet unter anderem das Einbinden von Dateisystemen sowie das Starten und Stoppen von Diensten, um nur einige zu nennen.

Systemd verwendet die Datei /etc/systemd/system/default.target, um den Zustand oder das Ziel zu bestimmen, in das das Linux-System booten soll.

  • Für eine Desktop-Arbeitsstation (mit GUI) ist der Standardzielwert 5, was dem Runlevel 5 für den alten SystemV init entspricht.
  • Für einen Server ist das Standardziel multi-user.target, was dem Runlevel 3 im SysV init entspricht.

Hier ist eine Aufschlüsselung der systemd-Ziele:

  • poweroff.target (Runlevel 0): Herunterfahren oder Ausschalten des Systems.
  • rescue.target (Runlevel 1): Startet eine Rettungs-Shell-Sitzung.
  • multi-user.target (Runlevel 2,3,4): Konfiguriert das System zu einem nicht grafischen (Konsolen-) Mehrbenutzersystem.
  • graphical.target (Runlevel 5): Legt das System auf eine grafische Mehrbenutzeroberfläche mit Netzwerkdiensten fest.
  • reboot.target (Runlevel 6): Startet das System neu.

Um das aktuelle Ziel auf Ihrem System zu überprüfen, führen Sie den Befehl aus:

$ systemctl get-default
Check Run Level

Sie können von einem Ziel zum anderen wechseln, indem Sie den folgenden Befehl im Terminal ausführen:

$ init runlevel-value

Zum Beispiel konfiguriert init 3 das System auf einen nicht-grafischen Zustand.

Der Befehl init 6 startet Ihr System neu und init 0 schaltet das System aus. Stellen Sie sicher, dass Sie den Befehl sudo aufrufen, wenn Sie zu diesen beiden Zielen wechseln möchten.

Der Bootvorgang endet, sobald systemd alle Daemons lädt und das Ziel- oder Runlevel-Wert festlegt. An diesem Punkt werden Sie nach Ihrem Benutzernamen und Passwort aufgefordert, woraufhin Sie Zugang zu Ihrem Linux-System erhalten.

Source:
https://www.tecmint.com/linux-boot-process/