Gibt es einen Befehl oder eine Methode (außer RTFM), um festzustellen, ob ein System über ein UEFI-BIOS verfügt?

7

Meine Inspiration dafür ist diese andere Frage auf Ask Ubuntu .

Ein Grund, den ich frage, ist, dass ich nur neugierig bin. Ich würde gerne mehr darüber wissen, welchen Wert es in Zukunft haben könnte.

Ich würde aber auch gerne wissen, dass ich eine Prozedur habe, die ich von einem Benutzer ausführen lassen kann, wenn ich mich frage, ob WTFer mit ihm und seinem System fertig ist. ;-);

Anfangs habe ich mich gefragt, ob diese Informationen von einem Tool wie (oder ähnlich) erkannt und gemeldet werden könnten dmidecode. Aber was würde passieren, wenn a a UEFI BIOSsimuliert pre-UEFI BIOS?

Ich gehe davon aus, dass diese Frage mit der Zeit immer interessanter wird. Es scheint, dass die Unternehmen, die hinter jedem der wichtigsten Betriebssysteme stehen, darauf bestehen werden, EFISupport zu implementieren , indem sie " dasselbe nur anders machen ".<sigh/>

irrationaler John
quelle

Antworten:

3

Ein System kann über eine UEFI-Firmware verfügen und das Betriebssystem weiterhin im Legacy-BIOS-Modus starten. In dieser Situation kann das gebootete Betriebssystem nicht feststellen, ob die Hardware tatsächlich UEFI-fähig ist, da das BIOS nicht vorwärtskompatibel mit UEFI ist.

Sie können sich weiterhin die Firmware-Oberfläche ansehen, wenn etwas mit UEFI zu tun hat, dies ist jedoch herstellerspezifisch und inkonsistent. Es gibt also auch keine eindeutige Antwort von dieser Seite.

Die kanonische Methode zum Beweisen Ihres x86 (_64) -Kernels wird von UEFI gestartet:

    $ dmesg | grep 'EFI v'
    [    0.000000] efi: EFI v2.31 by EDK II

Der Kernel druckt diese Nachricht am Haupteinstiegspunkt des EFI-Starts. Der Kernel wird genau dann mit UEFI gestartet, wenn eine solche Nachricht vorhanden ist.

Andere informative Sachen:

    $ dmesg | grep 'efi: mem'
    [    0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x00000000000a0000) (0MB)
    ...

Dies ist die Speicherzuordnung, die von der EFI-Firmware an den Kernel übergeben wird.

    $ ls -F /sys/firmware/efi
    efivars/  systab  vars/

Dies sind Kernel-ABIs, die mit EFI verwandt sind. efivars(3.8+) und varssind Kernel-ABI des EFI-NVRAM, sodass Sie die Startoptionen damit ändern können.

Das Fehlen dieser Hinweise beweist jedoch nicht, dass das System nur ein BIOS ist.

Empirisch gesehen haben alle neueren Laptops alle UEFI-Firmware. Die neuesten Server werden auf die UEFI-Firmware migriert.

Bearbeiten: Der Autor von rEFInd hat eine gründlichere Erklärung . Schritte sind die gleichen.

Außerdem erkennt die Firmware Test Suite von Ubuntu möglicherweise, ob Ihre UEFI-Firmware über eine Kompatibilitätsfunktion für ältere BIOS verfügt . Obwohl es das Problem der Erkennung von UEFI-fähigen Firmware-Starts im BIOS-Modus nicht löst.

Lingzhu Xiang
quelle
2

Wenn Sie in das "BIOS" (eigentlich EFI) gehen, sollte eines der Elemente in der Liste der bootfähigen Elemente die EFI-Startaufforderung sein , wenn es sich um ein UEFI-System handelt. Dies wird manchmal als EFI-Shell bezeichnet. Es ähnelt einer abgemagerten Version einer Unix-Eingabeaufforderung. Normalerweise möchten Sie es nicht in der Startliste haben, aber es kann bei der Ersteinrichtung und bei der Fehlerbehebung hilfreich sein.

Ich nehme an, ein UEFI-System könnte ohne diese Funktion hergestellt werden, aber Sie würden viel aufgeben, was EFI dazu veranlasst, EFI dazu zu bewegen.

Warren Young
quelle