Startseite > Linux-Grundlagen > Bootkonzept des Linux-Betriebssystems
Bootkonzept des Linux-Betriebssystems PDF Drucken E-Mail

Bootvorgang

1. BIOS

Nach dem Einschalten des Rechners werden vom BIOS Bildschirm und Tastatur initialisiert sowie der Hauptspeicher getestet.

Zunächst werden Informationen über das aktuelle Datum, die Uhrzeit und die wichtigsten angeschlossenen Geräte aus den CMOS-Werten ausgelesen. Wenn die erste Festplatte samt ihrer Geometrie bekannt ist, geht die Kontrolle über das System vom BIOS auf den Bootloader über.

2. Bootloader

Der physikalisch erste Datensektor von 512 Byte Größe (Master Boot Record) wird von der ersten Festplatte in den Speicher geladen und das Programm (der Bootloader) am Anfang dieses Sektors ausgeführt.

Der Bootloader übergibt schließlich die Kontrolle an das eigentliche Betriebssystem, in unserem Falle also an den Linux-Kernel. Näheres zum Linux-Bootloader Grub sehen Sie unter System-Tricks > Grub.

3. Kernel und initrd

Neben dem Kernel wird außerdem die initrd in den Speicher geladen, das heißt eine virtuelle oder RAM-Disk zur Hardware-Initialisierung. Der Linux-Kernel kann nämlich noch vor dem Mounten (Einbinden) der eigentlichen Root-Partition ein kleines Dateisystem in einer solchen RAM-Disk ansprechen, um dort bestimmte Programme auszuführen. Die initrd wird dazu vom Kernel entpackt und dann als temporäre Root-Partition gemountet (eingebunden).

Der Inhalt dieses initrd-Dateisystems ist ein minimales Linux-System, dass ein Programm namens linuxrc enthält. Dieses Programm führt alle Aktionen aus, die zum Mounten der eigentlichen Root-Partition erforderlich sind, wie die Bereitstellung von Kernel-Funktionen für das System und Gerätetreiber für Massenspeicher-Controller. Nachdem linuxrc ausgeführt wurde, löscht der Kernel die gesamte initrd aus dem Speicher und startet das Programm init.

Das init-Programm

Das Programm init ist der für die korrekte Initialisierung des Systems zuständige Prozess mit der Prozessnummer 1; alle Prozesse im System werden deswegen als "Kinder" von init oder eines seiner "Kinder"-Prozesse betrachtet. Das Programm wird direkt vom Kernel gestartet und ist immun gegen das Signal 9, mit dem normalerweise jeder Prozess abrupt beendet ("gekillt") werden kann. Alle weiteren Prozesse werden entweder von init selbst oder von einem seiner "Kindprozesse" gestartet. Weitere Informationen zu Prozessen und Prozessverwaltung siehe unter Prozessverwaltung unter Linux.

Konfiguriert wird init zentral über die Datei /etc/inittab; hier werden die so genannten "Runlevels" (siehe unten) definiert, und es wird festgelegt, welche Dienste und Daemons in den einzelnen Levels zur Verfügung stehen sollen. Abhängig von den Einträgen in dieser Datei ruft init verschiedene Skripten auf, die aus Gründen der Übersichtlichkeit im Verzeichnis /etc/init.d zusammengefasst sind.

Das gesamte Hochfahren des Systems - und natürlich auch das Herunterfahren - wird somit einzig und allein vom init-Prozess gesteuert. Insofern lässt sich der Kernel quasi als Hintergrundprozess betrachten, dessen Aufgabe darin besteht, die gestarteten Prozesse zu verwalten, ihnen Rechenzeit zuzuteilen und den Zugriff auf die Hardware zu ermöglichen und zu kontrollieren.

Die Runlevel

Unter Linux exisitieren verschiedene Runlevels, die bestimmen, wie das System gestartet wird und welche Dienste im laufenden System verfügbar sind.

Der Standard-Runlevel, bis zu dem das System beim Booten hochfährt, ist in der Datei /etc/inittab durch den Eintrag initdefault festgelegt. Für gewöhnlich ist dies 3 oder 5. Man kann den gewünschten Runlevel jedoch auch beim Booten (z. B. am Boot-Promt mit init 3) angeben.

Um zu einem späteren Zeitpunkt in einen anderen Runlevel zu wechseln, kann man init mit der Nummer des zugehörigen Runlevels aurufen; dieser Wechsel kann jedoch nur vom Systemadministrator veranlasst werden.

(Quelle: SuSE Dokumentation ©)

BezeichnungKurze Erklärung
0System anhalten (engl. system halt)
SEinzelnutzerbetrieb (engl. single user mode); vom Boot-Promt aus mit US-Tastaturbelegung
1Einzelnutzerbetrieb (engl. single user mode)
2Lokaler Mehrnutzerbetrieb ohne entferntes Netzwerk (engl. local multiuser mode without remote network)
3Voller Mehrnutzerbetrieb mit Netzwerk (engl. full multiuser mode with network)
4Nicht belegt (engl. not used)
5Voller Mehrnutzerbetrieb mit Netzwerk und X Display Manager (engl. full multiuser mode with network and X display manager) - KDM (Standard), GDM oder XDM
6System neustart (engl. system reboot)