GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

CentOS / RHEL 7 :Bootvorgang

Es ist wichtig, den Linux-Startvorgang zu verstehen, um Startprobleme zu beheben. Dies sind die allgemeinen Schritte im Startvorgang. Sie müssen auf Dateien achten, die am Startvorgang beteiligt sind, da Fehler in diesen Dateien Startprobleme verursachen können.

Wenn während des Startvorgangs ein Problem auftritt, müssen Sie ermitteln, in welcher Phase des Startvorgangs das Problem liegt, damit Sie geeignete Maßnahmen ergreifen können, um das Problem zu beheben.

Einführung von systemd

systemd ist der neue System- und Dienstmanager in CentOS/RHEL 7. Er ist abwärtskompatibel mit SysV-Init-Skripten, die von früheren Versionen von RedHat Linux einschließlich RHEL 6 verwendet wurden. Er ersetzt Upstart als Standard-Initialisierungssystem.

Die folgenden Schritte fassen zusammen, wie der Startvorgang in RHEL/CentOS 7 abläuft.

  1. Das BIOS des Computers führt den POST durch.
  2. BIOS liest den MBR für den Bootloader.
  3. GRUB 2 Bootloader lädt das vmlinuz Kernel-Image.
  4. GRUB 2 extrahiert den Inhalt des initramfs-Images.
  5. Der Kernel lädt Treibermodule von initramfs.
  6. Kernel startet den ersten Prozess des Systems, systemd.
  7. Der systemd-Prozess übernimmt. Es:
    • Liest Konfigurationsdateien aus dem Verzeichnis /etc/systemd
    • Liest die durch /etc/systemd/system/default.target verlinkte Datei
    • Bringt das System in den durch das Systemziel definierten Zustand
    • Führt /etc/rc.local aus

1. POST (Selbsttest beim Einschalten)

Von der Systemfirmware, die das moderne Universal Extended Firmware Interface (UEFI ) oder das klassische Basic Input Output System (BIOS ), wird der Power-On Self-Test (POST) ausgeführt und die zum Starten des Systems erforderliche Hardware initialisiert.

2. Auswählen des bootfähigen Geräts (mit MBR)

– Master Boot Record (MBR) sind die ersten 512 Bytes des Boot-Laufwerks, die vom BIOS in den Speicher eingelesen werden.
– Die nächsten 64 Bytes enthalten die Partitionstabelle für die Festplatte. Die letzten beiden Bytes sind die „Magic Number“, die zur Fehlererkennung verwendet wird.

– MBR erkennt das bootfähige Gerät und lädt den GRUB2-Bootloader in den Speicher und überträgt die Kontrolle darauf.

3. Laden des Bootloaders (GRUB2)

– Das Standard-Bootloader-Programm, das auf RHEL 7 verwendet wird, ist GRUB 2. GRUB steht für GRand Unified Bootloader . GRUB 2 ersetzt den älteren GRUB-Bootloader, der auch als Legacy-GRUB bezeichnet wird.
– Die Konfigurationsdatei von GRUB 2 befindet sich unter /boot/grub2/grub.cfg (Bearbeiten Sie diese Datei nicht direkt).

– GRUB 2-Menükonfigurationseinstellungen werden beim Generieren von grub.cfg aus /etc/default/grub entnommen.
– Beispieldatei für /etc/default/grub:

# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"

– Wenn an einem dieser Parameter Änderungen vorgenommen werden, müssen Sie grub2-mkconfig ausführen um die Datei /boot/grub2/grub.cfg neu zu generieren.

# grub2-mkconfig –o /boot/grub2/grub.cfg

– GRUB2 durchsucht die komprimierte Kernel-Image-Datei, die auch als vmlinuz bezeichnet wird, im /boot-Verzeichnis.
– GRUB2 lädt die vmlinuz-Kernel-Image-Datei in den Speicher und extrahiert den Inhalt der initramfs-Image-Datei in ein temporäres, speicherbasiertes Dateisystem (tmpfs).
– Die initiale RAM-Disk (initrd) ist ein initiales Root-Dateisystem, das vor dem eigentlichen Root-Dateisystem gemountet wird.

initramfs
– Die Aufgabe des anfänglichen RAM-Dateisystems besteht darin, die Blockgerätemodule, z. B. für IDE, SCSI oder RAID, vorab zu laden, sodass dann auf das Root-Dateisystem zugegriffen werden kann, auf dem sich diese Module normalerweise befinden gemountet.
– Das initramfs ist an den Kernel gebunden und der Kernel mountet dieses initramfs als Teil eines zweistufigen Boot-Prozesses.
– Das Dienstprogramm dracut erstellt initramfs immer dann, wenn ein neuer Kernel installiert wird.
– Verwenden Sie den Befehl lsinitrd, um den Inhalt des von dracut erstellten Images anzuzeigen:

# lsinitrd | less

4. Laden des Kernels

– Der Kernel startet den systemd-Prozess mit einer Prozess-ID von 1 (PID 1).

– Es lädt auch die erforderlichen Treibermodule aus dem initrd-Image.
– Der Bootloader (GRUB2) kann dem Benutzer ein Bootmenü präsentieren oder so konfiguriert werden, dass er automatisch ein Standardbetriebssystem startet.
– To load Linux, der Kernel wird zusammen mit dem initramfs geladen. Das initramfs enthält Kernelmodule für die gesamte Hardware, die zum Booten erforderlich ist, sowie die anfänglichen Skripte, die erforderlich sind, um mit der nächsten Bootphase fortzufahren.
– Auf RHEL 7 enthält das initramfs ein vollständiges Betriebssystem (das ggf wird für Fehlerbehebungszwecke verwendet).

5. Systemd starten

– Der Kernel startet den systemd-Prozess mit einer Prozess-ID von 1 (PID 1).

root          1      0  0 02:10 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 23

– systemd ist der erste Prozess, der nach dem Hochfahren des Systems startet, und ist der letzte Prozess, der ausgeführt wird, wenn das System heruntergefahren wird.
– Er steuert die letzten Phasen des Hochfahrens und bereitet das System für die Verwendung vor. Es beschleunigt auch das Booten, indem Dienste gleichzeitig geladen werden.
– systemd liest die Datei, die durch /etc/systemd/system/default.target verknüpft ist (z. B. /usr/lib/systemd/system/multi-user.target) um das standardmäßige Systemziel zu bestimmen (entspricht der Ausführungsebene). Die Systemzieldatei definiert die Dienste, die Systemd startet.
– Mit Systemd können Sie verschiedene Arten von Einheiten auf einem System verwalten, darunter Dienste (Name.Dienst) und Ziele (Name.Ziel), Geräte (Name.Gerät) , Dateisystem-Einhängepunkte (name.mount) und Sockets (name.socket).

Vergleich von SysV-Runlevels und Zieleinheiten

Ausführungsebene Zieleinheiten Beschreibung
0 runlevel0.ziel, poweroff.ziel Herunterfahren und ausschalten
1 runlevel1.ziel, rettung.ziel Rettungs-Shell einrichten
2,3,4 runlevel[234].target, multi-user.target Eine nicht-grafische Mehrbenutzer-Shell einrichten
5 runlevel5.target, graphisches.target Eine grafische Mehrbenutzer-Shell einrichten
6 runlevel6.ziel, reboot.ziel System herunterfahren und neu starten

systemd bringt das System in den vom Systemziel definierten Zustand und führt Systeminitialisierungsaufgaben aus wie:
1. Festlegen des Hostnamens
2. Netzwerk initialisieren
3. SELinux basierend auf seiner Konfiguration initialisieren
4. Drucken eines Willkommensbanners
5. Initialisieren der Systemhardware basierend auf Kernel-Boot-Argumenten
6. Mounten der Dateisysteme, einschließlich virtueller Dateisysteme wie dem /proc-Dateisystem
7. Verzeichnisse in /var aufräumen
8. Austausch beginnen

Standard-/aktuelles Zielgerät anzeigen

Verwenden Sie den folgenden Befehl, um anzuzeigen, welche Zieleinheit standardmäßig verwendet wird:

# systemctl get-default
graphical.target

Das graphical.target Zieleinheit gibt an, dass das System in einem grafischen Mehrbenutzermodus ausgeführt wird. Dies ähnelt Runlevel 5 in einem SysV-Init-System. Sie können dies mit dem alten Befehl runlevel überprüfen :

# runlevel
N 5

Die standardmäßige Zieleinheit wird durch /etc/systemd/system/default.target dargestellt Datei. Diese Datei ist ein symbolischer Link zur aktuellen Standardzieleinheit. Zum Beispiel:

# ls -lrt /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 36 Sep 23 20:01 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

Standardzieleinheit ändern

Verwenden Sie den folgenden Befehl, um die standardmäßige Zieleinheit zu ändern (z. B. um die Standardeinheit in die Einheit multi-user.target zu ändern):

# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

Beachten Sie, dass sich der symbolische Link default.target geändert hat und nun auf die Unit multi-user.target zeigt:

# ls -lrt /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 41 Sep 24 11:58 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

Die folgende Tabelle fasst zusammen, wo eine bestimmte Phase konfiguriert ist und was Sie tun können, um Probleme zu beheben, wenn etwas schief geht.

Startphase Konfiguration
POSTEN Hardwarekonfiguration (F2, ESC, F10 oder eine andere Taste)
Bootfähiges Gerät auswählen BIOS/UEFI-Konfiguration oder Hardware-Startmenü
Laden des Bootloaders grub2-install und bearbeitet /etc/defaults/grub
Laden des Kernels Änderungen an der GRUB-Konfiguration und /etc/dracut.conf
starte /sbin/init In initramfs kompiliert
Initrd.target wird verarbeitet In initramfs kompiliert
Wechseln Sie zum Root-Dateisystem /etc/fstab
Ausführen des Standardziels /etc/systemd/system/default.target
CentOS / RHEL 7 :Anfängerleitfaden zu systemd
CentOS / RHEL 7 :Anfängerleitfaden zu systemd-Zielen (Ersatz von SysV-Init-Runlevels)


Cent OS
  1. Einzelbenutzermodus in CentOS 7 / RHEL 7

  2. Installieren Sie Skype auf dem CentOS 7-System – Schritt-für-Schritt-Prozess?

  3. Reparieren von Dateisystemproblemen beim Booten in CentOS/RHEL 7 und 8

  4. So debuggen Sie den systemd-Startvorgang in CentOS/RHEL 7 und 8

  5. So debuggen Sie den systemd-Startvorgang in CentOS/RHEL 7 und 8

So installieren Sie Cockpit unter CentOS 8 / RHEL 8

Konfigurieren Sie den FreeIPA-Server auf CentOS 7 / RHEL 7 – einem Identitätsverwaltungssystem

So booten Sie in CentOS 8 / RHEL 8 in den Einzelbenutzermodus

CentOS / RHEL 7 :So ändern Sie die Ausführlichkeit von Debug-Protokollen während des Bootens

CentOS / RHEL 7 :So booten Sie von der Installations-DVD/ISO in den Rettungsmodus

CentOS / RHEL 5:So booten Sie in den Rettungsmodus