In welchem ​​Modus betreiben moderne 64-Bit-Intel-Chip-PCs den Boot-Sektor?

3876
mring

Ich kenne bei älteren Maschinen wie 286s die ersten 512 Bytes, die vom ersten Sektor des Bootlaufwerks auf 0000 geladen wurden: 7C00 im Arbeitsspeicher wurden im 16-Bit-Realmodus ausgeführt, aber wie sieht es mit modernen 64-Bit-Architekturen aus?

Edit: Ich denke, das ist eine falsche Frage, wenn ich darüber nachdenke. Der Verfasser des Bootloaders entscheidet, welche Montageanweisungen für den Modus verwendet werden, oder? Die Hardware macht einfach das, was gesagt wurde. Dann sollte meine Frage lauten: Welchen Modus verwenden gängige Betriebssystem-Bootloader wie Windows 7, Mac OS X (die neueste Version) und GRUB auf 64-Bit-Computern?

12

4 Antworten auf die Frage

13
haimg

Alle aktuellen x86-kompatiblen Computer (einschließlich x64-Architekturen, sowohl von Intel als auch von AMD, aber nicht von Itanium) führen den Bootsektorcode im x86-Realmodus aus, genau wie der ursprüngliche IBM-PC vor über 20 Jahren. Es handelt sich nicht um den Kernel-Modus, sondern um den ursprünglichen segmentierten Modus ohne Speicherschutz, Multitasking oder Code-Privilegien.

Wenn Sie ein Diskettenlaufwerk erhalten, MS-DOS (oder FreeDOS ) darauf legen und in den heutigen Computer stecken, wird der Bootvorgang gestartet.

Es ist die Aufgabe des Boot-Codes, in den geschützten Modus zu wechseln, einen Speicherschutz einzurichten usw. So ist Ihre Vermutung teilweise richtig. Der Bootloader startet die Ausführung im x86-Realmodus und wechselt in den geschützten Modus, lädt und startet den OS-Kernel im "Kernel" -Modus (Ring 0).

Weitere Informationen finden Sie im Wikipedia-Artikel zum Windows NT-Startvorgang, der einige Details zu diesem Thema enthält.

haimg, danke für diesen link und die klärung. @Deshe, tut mir leid, die beste Antwort wegzunehmen. mring vor 12 Jahren 0
Jetzt ist es an der Zeit, das zu bearbeiten, ansonsten stimmt deine eigene Antwort nicht überein :-) Daniel Beck vor 12 Jahren 0
13
JdeBP

Wie sieht es mit modernen 64-Bit-Architekturen aus?

Das hängt von der Firmware ab, die sich auf dem modernen 64-Bit-Computer mit der modernen 64-Bit-Architektur befindet. haimgDie Antwort wäre vor fünf bis sechs Jahren für die x86-Welt gewesen, aber für die x86-Welt von heute ist sie nicht mehr aktuell.

Alte PC / AT-Firmwares

Einige dieser modernen 64-Bit-Maschinen verfügen über alte PC / AT-Firmwares. Wie bereits in anderen Antworten erwähnt, laden und starten sie das Bootstrap-Programm vom Sektor Nr. 0 einer CD auf die gleiche Weise 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 einer Scheibe überhaupt . Sie werden vom EFI-Boot-Manager geladen, indem sie eine EFI-Bootloader-Anwendung laden und ausführen . Solche Programme werden im geschützten Modus ausgeführt. Dies ist der EFI-Bootstrap-Prozess.

EFI-Firmwares schalten im Allgemeinen innerhalb weniger Anweisungen in den geschützten Modus, wenn der Prozessor zurückgesetzt wird. Das Umschalten in den geschützten Modus erfolgt frühzeitig in der sogenannten "SEC-Phase" der EFI-Firmware-Initialisierung. Technisch starten 32-Bit- und größere x86-Prozessoren nicht einmal im Real-Modus, sondern im so genannten Unreal-Modus . (Der anfängliche Segment-Deskriptor für das CSRegister beschreibt nicht das herkömmliche Real-Modus-Mapping und ist es, was dieses "unreal" macht.)

Als solche könnte man sagen, dass diese EFI - Systeme nie real - Modus geben Sie die richtige überhaupt, wenn nativ auf einem EFI - Bootloader Bootstrapping (dh wenn sie keine verwenden Kompatibilität Support - Modul ), da sie von unwirklich Modus wechseln direkt in den geschützten Modus und bleiben von da an im geschützten Modus.

Die Verbindung zum Bootstrap-Prozess scheint unterbrochen / tot zu sein. Ich kann keinen Ersatz finden. slm vor 5 Jahren 0
Das deins? - https://jdebp.eu/FGA/pcat-boot-process.html slm vor 5 Jahren 0
Und jetzt kenne ich Ihren Namen unter den URLs 8-). Nicht zu versuchen, zu spionieren, konnte nicht anders. slm vor 5 Jahren 1
Ich glaube, du hast die Dinge von ntlworld verschoben, stimmt das? slm vor 5 Jahren 0
Mögliche Ersatz-URL für 1st - https://jdebp.eu/FGA/pcat-boot-process.html. Mein Gott, bitte, kopiere / füge dein A'er überall hinzu. Auch diese Wikipedia hat dieses A'er zitiert - https://en.wikipedia.org/wiki/Talk%3AReal_mode. slm vor 5 Jahren 0
1
Deshe

Soweit ich weiß, läuft der Bootcode immer im Kernel-Modus.

Zum einen ist es unmöglich für irgendetwas zu entscheiden, welcher Modus verwendet werden soll, da er vom Boot-Sektor ausgeführt wird, einfach weil es die ersten Anweisungen sind, die von der Firmware ausgeführt werden. Der Code kann nicht festlegen, welche Anweisungen verfügbar sind, bevor er ausgeführt wird. Konstruktionsbedingt ist der für den Code auf dem Boot-Sektor verfügbare Assemblysatz von der Architektur vorgegeben.

Wäre ein unterprivilegierter Modus dafür ausgewählt worden, wäre es unmöglich gewesen, Anweisungen aus höher privilegierten Modi zu verwenden, was die Tatsache, dass der Boot-Code mit dem am meisten privilegierten Modus läuft, ziemlich zwingt.

1
Ciro Santilli 新疆改造中心 六四事件 法轮功

Intel Handbuch Band 3 System Programmierhandbuch 325384-053DE Januar 2015:

2.2 BETRIEBSARTEN

Der Prozessor befindet sich nach dem Einschalten oder einem Reset im Echtadressenmodus.

Nur für die Kicks ein schönes Diagramm aus dem Handbuch:

GRUB startet das Betriebssystem im geschützten Modus. Multiboot-Spezifikation 0,6.96 Maschinenzustand :

'CR0' Bit 0 (PE) muss gesetzt sein.

Nicht sicher über GRUB und x86_64.