In welchem ​​Modus führen moderne 64-Bit-Intel-Chip-PCs den Bootsektor aus?


12

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.

Antworten:


12

Alle aktuellen x86-kompatiblen Computer (einschließlich der x64-Architektur von Intel und AMD, jedoch nicht von Itanium) führen den Bootsektorcode im x86-Realmodus aus , genau wie der ursprüngliche IBM-PC vor über 20 Jahren. Es ist kein Kernel-Modus, sondern der ursprüngliche segmentierte Modus ohne Speicherschutz, Multitasking oder Code-Berechtigungsstufen.

Wenn Sie ein Diskettenlaufwerk beschaffen, MS-DOS (oder FreeDOS ) darauf legen und es in den heutigen Computer stecken können, wird es gestartet.

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

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


haimg, danke für diesen Link und die Klarstellung. @ Deshe, tut mir leid, die beste Antwort wegzunehmen.
mring

Jetzt ist es an der Zeit, dies zu bearbeiten, sonst stimmen Sie Ihrer eigenen Antwort nicht zu :-)
Daniel Beck

13

Was ist mit modernen 64-Bit-Architekturen?

Dies 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 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 CSRegister 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.


Die Verbindung zum Bootstrap-Prozess scheint unterbrochen / tot zu sein. Ich kann keinen Ersatz finden.
Slm


1
Und jetzt kenne ich Ihren Namen anhand der URLs 8-). Nicht zu versuchen auszuspionieren, konnte nicht anders, als es zu bemerken.
Slm

Ich denke, Sie haben Dinge von ntlworld verschoben, ist das richtig?
Slm

Mögliche Ersatz-URL für 1st - jdebp.eu/FGA/pcat-boot-process.html . Mein Gott, bitte kopiere / füge dein A'er überall ein. Sogar diese Wikipedia hat diese A'er zitiert - en.wikipedia.org/wiki/Talk%3AReal_mode .
Slm

1

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.


1

Intel Handbuch Volume 3 System Programmierhandbuch 325384-053US Januar 2015:

2.2 BETRIEBSARTEN

Der Prozessor wird nach dem Einschalten oder Zurücksetzen in den Real-Address-Modus versetzt.

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

Geben Sie hier die Bildbeschreibung ein

GRUB startet Multiboot-Betriebssysteme im geschützten Modus. Multiboot-Spezifikation 0.6.96 Maschinenzustand :

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

Ich bin mir nicht sicher über GRUB und x86_64.


GRUB startet Multiboot-spezifikationskonforme Betriebssysteme im geschützten Modus. Das schließt die * BSDs ein, aber soweit ich weiß, folgt Linux dieser Spezifikation nicht und macht sein eigenes Ding. Beim Booten eines mit Multiboot-Spezifikationen kompatiblen Betriebssystems verwendet die GRUB-Konfiguration das multibootSchlüsselwort. für Linux gibt es gewidmet ist linux, linux16und in der UEFI - Versionen von GRUB, linuxefiSchlüsselwörter, GRUB anweisen , eine Linux-spezifische Boot - Protokoll zu verwenden.
TelcoM

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.