Wie funktioniert UEFI?

8

Ich habe über Bootloader gelernt, als genau der Begriff UEFI auftaucht. 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?

    
prog481 26.08.2015, 09:52
quelle

3 Antworten

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, die sie als EFI-Systempartition (ESP) kennzeichnet. BTW stellt diese Partition nicht bereit 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 OS 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.

    
Alex 27.08.2015 17:01
quelle
2

Hier ist eine gute Antwort auf diese Frage:

  

Andere moderne 64-Bit-Maschinen haben neue EFI-Firmwares. 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 Real-Modus-Mapping und macht das "unreal".)

     

Als solches könnte man sagen, dass diese EFI-Systeme niemals in den echten Modus überhaupt gelangen, wenn sie nativ in einen EFI-Bootloader starten (dh wenn sie kein Kompatibilitätsunterstützungsmodul verwenden), da sie direkt vom unwirklichen Modus wechseln in den geschützten Modus und bleiben Sie dann im geschützten Modus.

    
Buddy 26.08.2015 18:23
quelle
1

Wenn du gefragt hast "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-Ladeprogramm-Code die Kontrolle erhält? Und Sie kümmern sich darum, welche Dienste für Ihren Betriebssystem-Ladeprogrammcode bereitgestellt werden.

Die Umgebung ist in der UEFI-Spezifikation definiert. Neueste Versionen der UEFI-Spezifikationen

Was die Sprache betrifft, die Sie verwenden, ist die Montage am besten. Es ist wahrscheinlich einfacher, nach einer Weile C oder eine andere höhere Sprache zu verwenden.

Anderer Hintergrund:

Es gibt hier viele Begriffe, bei denen wir nicht immer vorsichtig sind.

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

Früher wurde auf einem x86-PC-System vor dem UEFI-Forum 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. Daher würden neue Betriebssysteme oder Anwendungen auf einem korrekten System funktionieren und dennoch auf einem anderen korrekten System fehlschlagen.

Heute haben wir versucht, eine gewisse Standardisierung dieser Schnittstellen bereitzustellen. Sie werden vom UEFI-Forum definiert. Heute kann ich beweisen, dass mein System den UEFI-Spezifikationen entspricht.

Wenn Benutzer beispielsweise UEFI sagen, beziehen sie sich normalerweise auf die tatsächliche Systemfirmware, die auf dem System installiert ist und vor der Ausführung des Betriebssystems ausgeführt wird. Aber viele von uns werfen immer noch diese Begriffe auf, wie wir Buchstabensuppe 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.

    
KevinD 03.09.2015 07:08
quelle