Ich weiß, dass bei älteren Computern wie 286s die ersten 512 Bytes, die vom ersten Sektor des Startlaufwerks auf 0000: 7C00 im Speicher geladen wurden, im 16-Bit-Real-Modus ausgeführt wurden, aber was ist mit modernen 64-Bit-Architekturen?
Edit: Ich denke, das ist eine falsche Frage, wenn man darüber nachdenkt. Der Verfasser des Bootloaders entscheidet, welche Montageanleitung für den Modus verwendet werden soll, oder? Die Hardware macht einfach das, was sie sagt. Dann sollte meine Frage sein, welchen Modus große Betriebssystem-Bootloader wie Windows 7, Mac OS X (das neueste) und GRUB auf 64-Bit-Computern verwenden.
Dies hängt von der Firmware ab, die sich auf dem modernen 64-Bit-Computer mit der modernen 64-Bit-Architektur befindet.
haimg
Die Antwort wäre vor fünf bis sechs Jahren für die x86-Welt der Fall gewesen, ist aber für die x86-Welt heute veraltet.Alte PC / AT-Firmwares
Einige dieser modernen 64-Bit-Computer verfügen über alte Firmwares im PC / AT-Stil. Wie in anderen Antworten erwähnt, laden sie das Bootstrap-Programm von Sektor 0 einer Disc und führen es auf die gleiche Weise aus wie der PC / AT. Dies ist der alte PC / AT-Bootstrap-Prozess.
Neue EFI-Firmwares
Andere moderne 64-Bit-Maschinen verfügen über neue EFI-Firmwares. Diese werden nicht geladen ein Bootstrap - Programm von Sektor # 0 eine Scheibe überhaupt . Sie booten durch den EFI Boot Manager, der eine EFI Bootloader-Anwendung lädt und ausführt . Solche Programme werden im geschützten Modus ausgeführt. Dies ist der EFI-Bootstrap-Prozess.
EFI-Firmwares wechseln im Allgemeinen innerhalb weniger Anweisungen nach dem Beenden des Prozessor-Resets in den geschützten Modus. Das Umschalten in den geschützten Modus erfolgt frühzeitig in der sogenannten "SEC-Phase" der EFI-Firmware-Initialisierung. Technisch gesehen starten 32-Bit- und größere x86-Prozessoren nicht einmal im eigentlichen Real-Modus, sondern im umgangssprachlichen Real- Modus . (Der anfängliche Segmentdeskriptor für das
CS
Register beschreibt nicht die herkömmliche Realmodusabbildung und macht dies "unwirklich".)Als solche könnte man sagen, dass diese EFI - Systeme nie real - Modus geben Sie die richtigen überhaupt, wenn nativ auf einen EFI - Bootloader Bootstrapping (dh wenn sie kein verwenden Kompatibilität Support - Modul ), da sie von unwirklich Modus wechseln direkt in dem geschützten Modus und bleiben Sie von da an im geschützten Modus.
quelle
Soweit ich weiß, läuft der Bootcode immer im Kernel-Modus.
Zum einen kann nichts entscheiden, welcher Modus verwendet werden soll, wenn er vom Bootsektor ausgeführt wird, einfach weil dies die ersten Anweisungen sind, die von der Firmware ausgeführt werden. Der Code kann nicht festlegen, welche Anweisungen ihm zur Verfügung stehen, bevor er ausgeführt wird. Somit ist der für den Code im Bootsektor verfügbare Baugruppensatz konstruktionsbedingt durch die Architektur vorgegeben.
Wäre dafür ein unterprivilegierter Modus gewählt worden, wäre es unmöglich gewesen, jemals Anweisungen aus höher privilegierten Modi zu verwenden, was die Tatsache, dass der Bootcode mit dem privilegiertesten verfügbaren Modus ausgeführt wird, ziemlich erzwingt.
quelle
Intel Handbuch Volume 3 System Programmierhandbuch 325384-053US Januar 2015:
Nur für die Kicks, ein schönes Diagramm aus dem Handbuch:
GRUB startet Multiboot-Betriebssysteme im geschützten Modus. Multiboot-Spezifikation 0.6.96 Maschinenzustand :
Ich bin mir nicht sicher über GRUB und x86_64.
quelle
multiboot
Schlüsselwort. für Linux gibt es gewidmet istlinux
,linux16
und in der UEFI - Versionen von GRUB,linuxefi
Schlüsselwörter, GRUB anweisen , eine Linux-spezifische Boot - Protokoll zu verwenden.