2015-08-26 9 views
8

Ich studierte über Bootloader, als genau der Begriff UEFI kam. Ich kann einige Dinge über UEFI verstehen. Aber noch, in welchem ​​Modus (Real, Protected, Long) startet ein System mit UEFI? Wenn normale Bootloader nicht mit UEFI arbeiten können, was ist dann die Alternative zum Bootloader beim Umgang mit UEFI? Und brauche ich eine andere Programmierung, um eine zu erstellen, als Assembly?Wie funktioniert UEFI?

Antwort

2

Hier ist eine good answer auf diese Frage:

Andere moderne 64-Bit-Maschinen neue EFI Firmware haben. Diese laden kein Bootstrap-Programm von Sektor Nr. 0 einer Disk überhaupt. Sie starten den Bootstrap, indem der EFI Boot Manager 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 in den geschützten Modus innerhalb einiger Anweisungen zum Beenden des Prozessor-Reset. Der Wechsel in den geschützten Modus erfolgt früh in der sogenannten "SEC-Phase" der Initialisierung der EFI-Firmware. Technisch gesehen starten 32-Bit- und größere x86-Prozessoren nicht einmal im richtigen Modus, sondern im sogenannten Unreal-Modus. (Der anfängliche Segmentdeskriptor für das CS-Register beschreibt nicht das herkömmliche Realmodus-Mapping und macht dies "unreal".)

Man könnte also sagen, dass diese EFI-Systeme niemals in den echten Modus überhaupt eintreten, Beim Bootstrapping nativ auf einen EFI-Bootloader (dh, wenn sie kein Kompatibilitätsunterstützungsmodul verwenden), da sie vom unwirklichen Modus direkt in den geschützten Modus wechseln und von da an im geschützten Modus bleiben.

+0

Es gibt keinen geschützten Modus für UEFI! UEFI funktioniert im 64-Bit-Modus! Einige Plattformen verwenden möglicherweise den 32-Bit-Flat-Modus. Die Terminologie ist auf den ersten Blick falsch, deshalb verwirrt sie viele Menschen. Früher wurde alles, was nicht im x86-Modus war, Protected Mode genannt. Aber das ist nicht ganz richtig. – Alex

9

Die UEFI-Firmware wird im 64-Bit-Modus für 64-Bit-Plattformen und im Flat-Modus für 32-Bit-Plattformen ausgeführt. Im Gegensatz zum BIOS verfügt UEFI über eine eigene, von der CPU unabhängige Architektur und eigene Gerätetreiber. UEFI kann Partitionen einhängen und bestimmte Dateisysteme lesen.

Wenn ein x86-Computer mit UEFI ausgestattet ist, durchsucht die Schnittstelle den Systemspeicher nach einer Partition, die mit einer bestimmten global eindeutigen Kennung (GUID) gekennzeichnet ist und diese als EFI-Systempartition (ESP) kennzeichnet. BTW Windows mountet diese Partition nicht und Sie können sie nicht im Betriebssystem sehen. Aber es gibt einen Trick, Sie ändern einfach den Partitionstyp (mit HexWorkshop) in VBR zu normalem FAT32-Code und es wird in das Betriebssystem eingebunden.

Diese Partition enthält Anwendungen, die für die EFI-Architektur kompiliert wurden. Im Allgemeinen müssen Sie sich nicht mit Assembler beschäftigen, um eine UEFI-Anwendung/einen Loader zu schreiben, es ist nur ein normaler C-Code. Standardmäßig befindet es sich bei "EFI/BOOT/BOOTX64.EFI". Wenn ein Bootloader manuell oder automatisch ausgewählt wird, liest UEFI ihn in den Speicher und gibt ihm die Kontrolle über den Bootvorgang.

1

Wenn Sie gefragt "In welchem ​​Modus (Real, Protected, Long) startet ein System mit UEFI?", Was meinst du? Der Prozessor startet die Ausführung in einem Modus, der dem Modus des 80386 der Vergangenheit ähnelt. Aber interessiert dich das wirklich? Ist Ihnen der Modus des Prozessors nicht wirklich wichtig, wenn Ihr Betriebssystem-Loader-Code die Kontrolle erhält? Und Sie interessieren sich dafür, welche Dienste für den Code Ihres Betriebssystemladeprogramms bereitgestellt werden.

Die Umgebung ist in der UEFI-Spezifikation definiert. Latest Versions of the UEFI Specifications

Wie für welche Sprache Sie verwenden, Montage ist gut, um mit zu beginnen. Es ist wahrscheinlich einfacher, nach einer Weile C oder eine andere höhere Sprache zu verwenden.

Anderer Hintergrund:

viele Begriffe gibt es hier, dass wir nicht immer vorsichtig sind korrekt zu verwenden.

Der Code, der ausgeführt wird, wenn der Prozessor nicht mehr zurückgesetzt wird, ist die Systemfirmware, die eine Vielzahl von Initialisierungen verschiedener Hardware im System durchführt.

In den alten Tagen auf einem x86-PC-System vor dem UEFI-Forum wurde die System-Firmware BIOS genannt. Das BIOS hat damals seinen gesamten Initialisierungscode ausgeführt, dann etwas Code von einer Diskette oder der Festplatte geladen und in den Code hineingesprungen. Das BIOS stellte auch einige Schnittstellen zwischen der Hardware und dem Betriebssystem zur Verfügung, um das Betriebssystem von Hardwareunterschieden zu isolieren. Nichts war jedoch standardisiert. Die einzigen Standards waren die Software für Betriebssysteme und Anwendungen, die die BIOS-Schnittstellen verwendeten.

Wenn das Betriebssystem und die Apps korrekt funktionierten, wurde das BIOS als korrekt angesehen. Aber man konnte die Richtigkeit nur durch Mangel an Versagen beweisen. Somit würden neue Betriebssysteme oder Anwendungen auf einem korrekten System arbeiten, aber auf einem anderen korrekten System fehlschlagen.

Heute haben wir versucht, einige tatsächliche Standardisierung dieser Schnittstellen zur Verfügung zu stellen. Sie werden vom UEFI-Forum definiert. Heute kann ich beweisen, dass mein System den UEFI-Spezifikationen entspricht.

Wenn Leute Dinge wie das UEFI sagen, beziehen sie sich normalerweise auf die tatsächliche Systemfirmware, die auf dem System installiert ist, das ausgeführt wird, bevor das Betriebssystem mit der Ausführung beginnt. Aber viele von uns werfen immer noch diese Begriffe auf, wie wir Alphabetsuppe verschüttet haben.

Der Bootloader ist eigentlich Betriebssystemeigener Code, der von der Systemfirmware in den Speicher geladen wird, und die Systemfirmware gibt dem Bootloader die Kontrolle über die Hardware. Man könnte sagen, dass das Ende der Systemfirmware der UEFI Boot Loader ist. Oder Sie können einfach sagen, dass BDS die Systemrichtlinie verwendet, um das Betriebssystem zu finden. Und du könntest immer noch jemanden finden, der mit den Worten nicht einverstanden ist.