Bootvorgang unter Linux

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Wechseln zu:Navigation, Suche
Dieser Artikel sollte überarbeitet werden.
Die Regeln für GlossarWiki-Artikel sollten beachten werden.
Der Inhalt sollte sprachlich verbessert werden.
In diesem Artikel sollten die Quellenangaben überarbeitet werden.
Bitte die Regeln der GlossarWiki-Quellenformatierung beachten.
Genauere Quellenangaben fehlen.

Dieser Artikel ist nicht korrekt kategorisiert (siehe Regeln für GlossarWiki-Artikel).


1 BIOS

Nach dem Einschalten des Rechners wird zu allererst, nach einigen vollkommend Hardware-seitigen Tests, mit der Ausführung des BIOS an der Adresse f000:fff0h. Das BIOS beginnt mit dem so genannten "Power on self test", den Initialisierungs- und Testroutinen. Der Power On Self Test (POST) beginnt zuerst mit dem Test und der Initialisierung von zentraler Hardware, wie CPU, BIOS-ROM, DMA-Controller, Tastatur, Interrupt- und Cache-Controller, sowie den ersten 64k des RAMs. Danach geschieht das Gleiche mit Systemerweiterungen, wie der RAM über 64k, weiteren Schnittstellen und den Disketten- und Festplattencontrollern. In Folge dessen werden ROM-Erweiterungen von anderen Pheripheriegeräten initialisiert, sowie die eigenen SCSI-BIOSe von SCSI-Erweiterungskarten abgearbeitet. Der Computer signalisiert darauf mit entsprechendem Signalton Erfolg oder Scheitern dieser Prozeduren.


2 Bootloader

Falls sämtliche Tests erfolgreich durchlaufen wurden, beginnt das BIOS nun, entsprechend der voreingestellten "Boot-Reihenfolge", die einzelnen Bootmedien nach einer gültigen Bootsequenz und läd die erste gültige. Das BIOS läd nun den MasterBootRecord des vorher erkannten Mediums. Dieser enthält, neben den Koordinaten der erste 4 primären Partitionen, den Bootloader oder Bootmanager. Da heutige Bootloader durch umfangreiche Funktionalitäten etwas größer als die verfügbaren 446Bytes sind, laufen diese in zwei Stufen ab. Die erste Stufe dient dazu, die zweite Stufe des Bootloaders welche den vollen Funtionsumfang enthält, in den Hauptspeicher zu laden und zu starten. Der Bootloader läd nun den gewünschten Linux-Kernel in den Speicher und startet diesen.


3 Linuxkernel

Der Kernel beginnt mit der Erkennung elementarer Hardware, etwa dem Prozessor, der Speichergröße. Dies geschieht teils mit Daten aus dem CMOS bzw des BIOSes oder durch eigene geeignete Subroutinen. Anschließend schaltet der Prozessor in den Protected Mode, um die Grundlage für Multitasking zu schaffen und direkte Speicherzugriffe auf kritischen Code (den Kernel) zu verhindern. Es folgt die Initialisierung der Speicherverwaltung, der Interruptcontroller und vorhandenen CO-Prozessoren. Danach erfolgt die Initialisierung der einzelnen Kernelteile, wie die virtuelle Speicherverwaltung, Interruptroutinen, Scheduler, Kernelpuffer oder auch Ressourcen zur Prozessinterkommunikation.


4 Initialer Prozess

Als allererster Prozess Nr.0 wird der so genannte Idle-Prozess gestartet. Er wird nur aktiv, falls das System gerade nichts zu tun hat. Jedoch fällt ihm noch eine sehr wichtige Aufgabe zu: das Starten des eigentlichen ersten Prozesses mit der Nummer 1, dem Init-Prozess. Er beginnt mit der Initialisierung von diversen Geräten und Sockets. Des Weiteren werden erste Daemons gestartet, wie der bdflush, welcher sich um die Synchronistation von Cache und Dateisystemen kümmert oder der kswapd, welcher den Swapspeicher verwaltet. Bevor einzelne Treiber durch Module nachgeladen werden können, erfolgt zuerst das Mounten der Root-Partition, welche elementare Systemprogramme (/sbin, /bin) und Systemkonfigurationsdateien (/etc) beinhaltet. Auf die zu mountende Root-Partition ist fest im Kernel verwiesen, jedoch kann sie mittels Bootparamter geändert werden.


5 Aufruf der Startskripte

Von der soeben gemounteten Rootpartition wird nun das Programm init gestartet. Für gewöhnlich führt dieses Programm eine Abarbeitung der Startskripte gemäß "System V" durch. Dies bedeutet, dass die einzelnen Startskripte unter "/etc/rc.d" bzw "/etc/init.d", wobei sich einige Linuxdistributionen in der Namensgebung der Verzeichnisse und Dateien unterscheiden. Die Konfiguration des init-Programmes erfolgt über die Datei "/etc/inittab", welche konfigurationsoptionen zum zu startenden Runlevel enthält. Die Runlevel können zwar frei konfiguriert werden, jedoch hat sich mehr oder weniger ein allgemeingültiger Standard eingebürgert: Runlevel 1-5 sind die einzelnen Betriebsrunlevel, von 1) Singleuser ohne Netzwerk bis 5) Multiuser mit Netzwerk. Runlevel 0 steht für Anhalten des Systems, Runlevel 6 für einen Neustart. Der init-Prozess stößt also nun den Start der gewünschten Runlevel an, in welchen die entsprechenden Startskripte gestartet werden. Dies umfasst zumeist: Das Mounten weiterer Partitionen und deren Überprüfung, Nachladen von Treibermodulen, Anlegen von Geräten (z.B. eth0), Starten von Daemons (z.B. sshd, samba, apache). Ist der gewünschte, bisher endgültige zu erreichende Runlevel erreicht, startet init die getty-Prozesse, die auf den gewünschten Konsolen ( z.B. virtuelle Konsolen unter alt+f1 bis alt+f6 oder auf dem seriellen Port) das Kommando "login" ausführen und somit die Grundlage zum weiteren Arbeiten, bzw zum Einloggen in das System schaffen.


Quelle: http://www.linuxfibel.de