Home · Kontakt · Impressum
contents index previous up next
Next: 12.1.2 Linux startet Up: 12.1 Bootvorgang und Starten Previous: 12.1 Bootvorgang und Starten


12.1.1 Der Bootvorgang

Jeder Bootvorgang beginnt mit dem Einschalten des Rechners. Um dem Netzteil Zeit zu geben um eine stabile Spannung zu liefern, bleibt der Prozessor erst einmal gestoppt. Sobald das Netzteil meint, es liefert eine stabile Spannung sendet es das sogenannte Power-Good-Signal an die Hauptplatine, die dann den Prozessor startet. Alle Intel- und Intel-kompatiblen Prozessoren starten im Realen Modus (engl. real mode). Im weiteren Verlauf werde ich mich beim Bootvorgang auf diese Prozessoren beschränken. In der Betriebsart Realer Modus erfolgt die Adressierung von Speicherstellen über zwei 16-bit-Register, dem Segmentregister und dem Offsetregister. Aus historischen Gründen, damals glaubte man, daß ein PC nie mehr als 640 KByte Arbeitsspeicher besitzen würde, erfolgt die Startprozedur im ersten Megabyte der Arbeitsspeicher. Um diesen Arbeitsspeicher adressieren zu können werden 20 Bit benötigt.


\begin{displaymath}
20 \, \textrm{Bit}
\equiv 2^{20} \, \textrm{Bytes}
= 1048576 \, \textrm{Bytes}
= 1 \, \textrm{MByte}
\end{displaymath} (12.1)

Da beide verwendeten Register 16 Bit groß sind, werden vom Segmentregister nur 4 Bit benötigt. Der Speicher ist also aufgeteilt in 16 Segemente zu 65.536 Bytes. Die Adresse ergibt sich dann nach folgender Regel: Das Segementregister wird um 4 Bit nach links verschoben. Das entspricht einer Multiplikation mit 16. Der entstehende Wert wird dann mit dem Offsetregister addiert. Schauen wir uns doch mal als Beispiel das Segmentregister 0xA000 und das Offsetregister 0x3F00 an.


\begin{displaymath}
\begin{array}{lcr}
\mbox{SR um 4~Bit} & & \texttt{A0000}\\
...
...
\hline
\mbox{20 Bit-Adresse} & & \texttt{A3F00}\\
\end{array}\end{displaymath} (12.2)

Die Schreibweise für die Adresse lautet dann: 000A:3F00.

Nachdem nun der Prozessor angefangen hat zu arbeiten, startet er den Programmcode an der Speicherstelle 0000F:FFF0. Hier befindet sich direkt nach dem Einschalten der Initialisierungscode des BIOS. Dieser Programmcode sucht nun ab dem zehnten Segment den Speicher nach weiterem BIOS-Code von Geräten (Grafikkarte, SCSI-Controller) durch und führt ihn aus. Dies ist übrigens auch der Grund, warum die Meldung der Grafikkarte als erstes erscheint.

Nach der Initialisierung und Ausführung des Grafikkarten-BIOS startet das BIOS den Power On Self Test. Dieser auch als POST abgekürzte Test überprüft den Prozessor und die DMA- und Interrupt-Controller. Danach führt er einen Test des Arbeitsspeichers durch, der als auffälliges Element beim Booten eigentlich jederm Anwender ins Auge fällt.

Am Ende des POST wird dafür gesorgt, daß auftretende Interrupts verarbeitet werden können. Interrupts sind Signale, die ein Programm darüber informieren, daß ein Ereignis eingetreten ist, was nun bearbeitet werden soll. In vielen Fällen wird dazu das Programm angehalten, das aufgetretene Ereignis wird abgearbeitet und danach setzt das Programm seine normale Tätigkeit fort. Denken Sie daran, daß auch das Betriebssystem nur ein Programm ist. Jedenfalls wird nun dafür gesorgt, daß im ersten Speicher-Segment12.1 die Interrupt-Vektor-Tabelle initialisiert wird. In ihr steht für jeden Interrupt eine Sprungadresse zu dem passenden Programmcode. Nach dem Abschluß des POST wird als letzte Aktion der Interrupt 0x1912.2 ausgelöst, dessen Programmcode nun versucht ein Betriebssystem zu starten. Dafür macht es sich auf die vorhandenen Datenträger nach einem funktionsfähigen Master Boot Record zu durchsuchen. Den Aufbau des Master Boot Records habe ich schon in Abschnitt 10.2 beschrieben. Das im MBR enthaltene Mini-Programm wird gestartet. Dies sorgt nun dafür, daß ein Bootloader gestartet wird. Dabei kann es sein, daß das Mini-Programm schon den ersten Teil des Bootloaders darstellt.


contents index previous up next
Next: 12.1.2 Linux startet Up: 12.1 Bootvorgang und Starten Previous: 12.1 Bootvorgang und Starten
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang