
Was ich weiß ist Folgendes:
Beim Start durchläuft das BIOS die folgende Sequenz:
1. Power-On Self-Test (POST)
2. BIOS der Grafikkarte (des Chips) erkennen und dessen Code ausführen, um die Grafikhardware zu initialisieren.
3. Alle anderen Geräte-BIOS erkennen und deren Initialisierungsfunktionen aufrufen .
4. BIOS-Startbildschirm
anzeigen. 5. Kurzen Speichertest durchführen (feststellen, wie viel Speicher im System vorhanden ist).
6. Speicher- und Laufwerksparameter
einstellen. 7. Plug & Play-Geräte konfigurieren (traditionell PCI-Bus-Geräte).
8. Ressourcen zuweisen (DMA-Kanäle und IRQs).
9. Boot-Gerät identifizieren.
Wenn das BIOS das Startgerät identifiziert (normalerweise eine von mehreren Festplatten, die als startfähige Festplatte gekennzeichnet wurden), liest es Block 0 von diesem Gerät in den Speicherplatz 0x7c00 und springt dorthin.
Aber was passiert danach, d. h. wie gibt das BIOS in diesem Stadium die Kontrolle an den Bootloader ab??
Antwort1
Wie im obigen Beitrag erwähnt, übergibt das BIOS die Kontrolle einfach an den Bootloader, indem es einen Sprungbefehl zu 0x7C00 ausführt.
Ein nicht bootfähiges Gerät kann in seinen ersten beiden Bytes den Befehl INT 18 (0xCD 0x18) haben (und die 55aa in den Bytes 511, 512), was dann einfach dazu führen würde, dass das BIOS zum nächsten Gerät in der Boot-Reihenfolge wechselt.
Antwort2
Da Sie 0x7C00 erwähnt haben, werde ich mich auf das MBR-Booten konzentrieren (GPT ist eine andere Sache).
Wie Sie sagten, sobald das BIOS feststellt, dass ein Gerät bootfähig ist (d. h. 0x55AA als die letzten beiden Bytes des ersten Sektors hat), liest es diesen ersten Sektor von der Festplatte und lädt ihn ab 0x7C00 in den Speicher. Sobald es den Sprungbefehl ausgibt, beginnt die CPU mit der Ausführung des dort vorhandenen Codes.
Dann muss der Bootloader herausfinden, was als Nächstes geladen und ausgeführt werden soll. Der Code, der das Laden und Springen zur nächsten Stufe durchführt, muss in die verbleibenden 510 Bytes des ersten Sektors passen. Eigentlich sogar weniger, da Festplatten auch die Partitionstabelle enthalten.
Weiterführende Literatur:Startvorgang,Erstellen Sie Ihren eigenen Bootloader