Drücken Sie den Netzschalter an Ihrem System und nach wenigen Augenblicken sehen Sie die Linux-Anmeldeaufforderung.
Haben Sie sich jemals gefragt, was hinter den Kulissen ab dem Drücken des Netzschalters passiert, bis die Linux-Anmeldeaufforderung erscheint?
Im Folgenden sind die 6 High-Level-Phasen eines typischen Linux-Startvorgangs aufgeführt.
1. BIOS
- BIOS steht für Basic Input/Output System
- Führt einige Systemintegritätsprüfungen durch
- Sucht, lädt und führt das Bootloader-Programm aus.
- Es sucht nach Bootloader auf Diskette, CD-ROM oder Festplatte. Sie können während des BIOS-Starts eine Taste drücken (normalerweise F12 oder F2, aber das hängt von Ihrem System ab), um die Startreihenfolge zu ändern.
- Sobald das Bootloader-Programm erkannt und in den Speicher geladen wurde, übergibt das BIOS ihm die Kontrolle.
- In einfachen Worten, das BIOS lädt und führt den MBR-Bootloader aus.
2. MBR
- MBR steht für Master Boot Record.
- Es befindet sich im 1. Sektor des bootfähigen Datenträgers. Typischerweise /dev/hda oder /dev/sda
- Der MBR ist kleiner als 512 Byte. Dies hat drei Komponenten 1) Informationen zum primären Bootloader in den ersten 446 Bytes 2) Informationen zur Partitionstabelle in den nächsten 64 Bytes 3) MBR-Validierungsprüfung in den letzten 2 Bytes.
- Es enthält Informationen über GRUB (oder LILO in alten Systemen).
- In einfachen Worten:MBR lädt und führt den GRUB-Bootloader aus.
3. GRUB
- GRUB steht für Grand Unified Bootloader.
- Wenn Sie mehrere Kernel-Images auf Ihrem System installiert haben, können Sie auswählen, welches ausgeführt werden soll.
- GRUB zeigt einen Begrüßungsbildschirm an, wartet einige Sekunden, wenn Sie nichts eingeben, lädt es das Standard-Kernel-Image, wie in der Grub-Konfigurationsdatei angegeben.
- GRUB hat das Wissen über das Dateisystem (der ältere Linux-Loader LILO hat das Dateisystem nicht verstanden).
- Die Grub-Konfigurationsdatei ist /boot/grub/grub.conf (/etc/grub.conf ist ein Link darauf). Das Folgende ist ein Beispiel für eine grub.conf von CentOS.
#boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-194.el5PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/ initrd /boot/initrd-2.6.18-194.el5PAE.img
4. Kernel
- Hängt das Root-Dateisystem ein, wie in „root=“ in grub.conf angegeben
- Kernel führt das Programm /sbin/init aus
- Da init das erste Programm war, das vom Linux-Kernel ausgeführt wurde, hat es die Prozess-ID (PID) von 1. Führen Sie ein ‘ps -ef | grep init’ und überprüfen Sie die PID.
- initrd steht für Initial RAM Disk.
- initrd wird vom Kernel als temporäres Root-Dateisystem verwendet, bis der Kernel gebootet und das echte Root-Dateisystem gemountet wird. Es enthält auch notwendige Treiber, die darin kompiliert sind, was ihm hilft, auf die Festplattenpartitionen und andere Hardware zuzugreifen.
5. Initiieren
- Sieht in der Datei /etc/inittab nach, um den Linux-Runlevel zu bestimmen.
- Im Folgenden sind die verfügbaren Runlevel aufgeführt
- 0 – anhalten
- 1 – Einzelbenutzermodus
- 2 – Mehrbenutzer, ohne NFS
- 3 – Vollständiger Mehrbenutzermodus
- 4 – unbenutzt
- 5 – X11
- 6 – Neustart
- Init identifiziert den Standard-Initlevel aus /etc/inittab und verwendet diesen, um alle geeigneten Programme zu laden.
- Führen Sie „grep initdefault /etc/inittab“ auf Ihrem System aus, um den Standard-Runlevel zu ermitteln
- Wenn Sie Probleme bekommen möchten, können Sie den Standard-Runlevel auf 0 oder 6 setzen. Da Sie wissen, was 0 und 6 bedeuten, werden Sie das wahrscheinlich nicht tun.
- Normalerweise würden Sie den Standard-Runlevel entweder auf 3 oder 5 setzen.
6. Runlevel-Programme
- Wenn das Linux-System hochfährt, werden möglicherweise verschiedene Dienste gestartet. Zum Beispiel könnte es heißen:„starting sendmail …. OK". Das sind die Runlevel-Programme, die aus dem Runlevel-Verzeichnis ausgeführt werden, wie von Ihrem Runlevel definiert.
- Abhängig von Ihrer Standard-Init-Level-Einstellung führt das System die Programme aus einem der folgenden Verzeichnisse aus.
- Lauflevel 0 – /etc/rc.d/rc0.d/
- Ebene 1 ausführen – /etc/rc.d/rc1.d/
- Ebene 2 ausführen – /etc/rc.d/rc2.d/
- Führen Sie Ebene 3 aus – /etc/rc.d/rc3.d/
- Führen Sie Ebene 4 aus – /etc/rc.d/rc4.d/
- Führen Sie Ebene 5 aus – /etc/rc.d/rc5.d/
- Führen Sie Ebene 6 aus – /etc/rc.d/rc6.d/
- Bitte beachten Sie, dass für diese Verzeichnisse auch symbolische Links direkt unter /etc verfügbar sind. Daher ist /etc/rc0.d mit /etc/rc.d/rc0.d verknüpft.
- Unter den Verzeichnissen /etc/rc.d/rc*.d/ sehen Sie Programme, die mit S und K beginnen.
- Programme, die mit S beginnen, werden während des Startvorgangs verwendet. S für Startup.
- Programme, die mit K beginnen, werden während des Herunterfahrens verwendet. K für töten.
- In den Programmnamen stehen Zahlen direkt neben S und K. Das sind die Sequenznummern, in denen die Programme gestartet oder beendet werden sollen.
- Zum Beispiel soll S12syslog den Syslog-Daemon starten, der die Sequenznummer 12 hat. S80sendmail soll den Sendmail-Daemon starten, der die Sequenznummer 80 hat. Das Syslog-Programm wird also vor Sendmail gestartet. li>
Hier hast du es. Das passiert während des Linux-Startvorgangs.