Linux – Boot Prozess
Vom Einschalten eines PCs bis zur Anmeldung werden verschiedene Phasen durchlaufen. Der Ablauf bei einem Linux Betriebssystem kann wie folgt unterteilt werden:
BIOS/UEFI
Im alltäglichen Sprachgebrauch wird zwischen den beiden Begriffen BIOS und UEFI kaum unterschieden, bzw., es wird meist der Begriff BIOS verwendet. Vereinfacht ausgedrückt, gibt es eine Software auf einem Chip, die nach dem Starten des Rechners angesprochen wird. Diese kann entweder das BIOS oder das UEFI sein.
BIOS | UEFI |
---|---|
Basic Input/Output System | Unified Extensible Firmware Interface |
Die Unterscheidung soll nicht Bestandteil des Beitrags sein, kann aber auf den verlinkten Seiten nachgelesen werden. ;)
MBR (Master Boot Record)
Der MBR befindet sich im ersten Sektor eines bootfähigen Speichermediums (Festplatte, CD, USB, …). Die Größe des MBR beträgt 512 bytes. Im MBR befinden sich Informationen zum Bootloader, welcher daraufhin geladen und ausgeführt wird.
Der MBR ist meist unter “/dev/hda” oder “/dev/sda” zu finden.
Bootloader
Für den Einsatz eines Bootloader kann zwischen verschiedenen Programmen ausgewählt werden. Unter Linux ist der Einsatz von Grub (Grand Unified Bootloader) oder dem Vorgänger LILO (Linux Loader) sehr verbreitet.
Wird Grub verwendet, gibt es die Möglichkeit, über ein Menü (/boot/grub) den gewünschten Kernel auszuwählen. Wird keine Auswahl getroffen, wird nach einigen Sekunden die “default” Einstellung gestartet. Grub lädt daraufhin den konfigurierten Kernel und startet diesen. Der Bootloader übergibt die Steuerung anschließend an das eigentliche Betriebssystem, in diesem Fall an den Linux-Kernel.
Die Einstellungen von Grub können in der Konfigurationsdatei unter “/etc/default/grub” angepasst werden.
Kernel
Der Kernel in Linux steuert alle Betriebssystemprozesse wie Speicherverwaltung, Aufgabenplanung, Input/Output, Interprozesskommunikation und die Gesamtsystemsteuerung. Der Kernel führt die Initialisierung des ersten Prozesses in “/sbin/init” aus.
Die Durchführung erfolgt in zwei Phasen:
Phase 1: Kernel loading stage
Es wird ein Image File geladen, welcher komprimiert vorliegt (/usr/src). Daraufhin wird das Image dekomprimiert und die Hardware Einstellungen werden festgelegt.
Phase 2: Kernel startup stage
Der Kernel führt den Init-Prozess aus.
INIT
Init ist der erste Prozess, welcher gestartet wird. Er besitzt immer die ID 1. Der Init-Prozess startet alle anderen Prozesse. Er ist für die ordnungsgemäße Initialisierung des Systems verantwortlich. Je nachdem, welches Linux verwendet wird, liegt die Konfigurationsdatei unter “/etc/inittab” oder im Ordner “/etc/init/”.
Diese Datei legt fest, welche Dienste und Daemons in den einzelnen Runlevels verfügbar sind. Auch hier gibt es Alternativen zu “init“, sehr verbreitet ist Upstart oder Systemd.
Runlevel
Abhängig von der Standardeinstellung eines “Runlevel” werden verschiedene Programme aus den folgenden Ordnern ausgeführt:
Runlevel | Beschreibung | Pfad |
---|---|---|
0 | halt the system | /etc/rc.d/rc0.d/ |
1 | single user mode (minimal services) | /etc/rc.d/rc1.d/ |
2 | local multi-user mode | /etc/rc.d/rc2.d/ |
3 | full multi-user mode | /etc/rc.d/rc3.d/ |
4 | unused | /etc/rc.d/rc4.d/ |
5 | Identisch mit Level 3, meist mit grafischer Oberfläche | /etc/rc.d/rc5.d/ |
6 | reboot the system | /etc/rc.d/rc6.d/ |
Beim Systemstart werden alle Runlevel durchlaufen (außer 0). Der Start ist abgeschlossen, wenn der als Standard-Runlevel definierte Runlevel erreicht ist.
Weitere Informationen