Wie erfahre ich, ob ich mit UEFI boote?

54

Ich habe gesucht, aber keinen offensichtlichen Weg gefunden, um festzustellen, ob GRUB UEFI im Systemstart oder im BIOS-Kompatibilitätsmodus oder in einem vollwertigen BIOS verwendet. Ich habe nur Windows-Methoden gefunden . Befindet sich in GRUB oder den Kernel-Startprotokollen etwas, das anzeigt, ob ich UEFI, EFI oder BIOS verwende?

Braiam
quelle
Ich habe keine Zeit, die Antwort nachzuschlagen, aber ich habe in letzter Zeit auch eine Menge UEFI-Fehlerbehebung durchgeführt. Diese Seite ist sehr hilfreich für das Verständnis von UEFI. rodbooks.com/refind/index.html
0xSheepdog
1
Ich möchte nicht schmuddelig klingen, aber wie sieht die Firmware des Geräts aus?
Ericx
1
@ericx Diese Frage steht unter dem Vorwand, dass Sie keine Ahnung haben, wie Sie sie überprüfen sollen. Aus diesem Grund können alle Lösungen auf einem gebooteten System ausgeführt werden.
Braiam

Antworten:

34

Wenn Sie nicht mit BIOS-Firmware, sondern mit UEFI-Firmware gebootet haben, sollte Ihr System die EFI-NVRAM-Variablen verfügbar machen in:

/sys/firmware/efi/vars/

oder

/sys/firmware/efi/efivars/

Beim Booten mit einem BIOS (oder dem BIOS-Emulationsmodus der UEFI-Firmware) sind diese Variablen nicht verfügbar.

In der Tat, wie @ Santropedro wies darauf hin, der Weg

/sys/firmware/efi

fehlt beim Booten mit einem BIOS, was einfacher zu überprüfen ist.

garethTheRed
quelle
+1 für eine Methode, die viel schneller und direkter ist, anstatt von einer bestimmten Zeichenfolgenausgabe aus der Firmware oder zusätzlichen Paketen abhängig zu sein, die im aktuellen Startvorgang möglicherweise nicht direkt relevant sind.
underscore_d
3
Was bedeutet "Variablen nicht verfügbar"? Es reicht aus, zu überprüfen, ob sich in dem Ordner kein Ordner befindet: / sys / firmware / called "efi"?
Santropedro
@ Santropedro - es scheint so. Ich werde den Beitrag bearbeiten. Danke.
garethTheRed
42

Erste Methode:

Ok, ich habe meine UEFI-Box hochgefahren, um das zu überprüfen. Erster Hinweis, in der Nähe der Spitze von dmesg. Dies sollte nicht angezeigt werden, wenn Sie über das BIOS gebootet werden:

[    0.000000] efi: EFI v2.31 by American Megatrends
[    0.000000] efi:  ACPI=0xd8769000  ACPI 2.0=0xd8769000  SMBIOS=0xd96d4a98 
[    0.000000] efi: mem00: type=6, attr=0x800000000000000f, range=[0x0000000000000000-0x0000000000001000) (0MB)
⋮


Zweite Methode:

$ sudo efibootmgr
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000
Boot0000* debian

Wenn dies nicht der Fall ist, sollte Folgendes angezeigt werden:

$ sudo efibootmgr        

EFI variables are not supported on this system.

Beachten Sie, dass das Paket efibootmgr installiert sein muss. Sie können auch versuchen, die EFI-Variablen aufzulisten:

$ efivar -l 
... over 100 lines of output ...


Dritte Methode:

Überprüfen Sie, ob Sie eine haben /boot/efi:

$ df -h --local | grep /boot
/dev/sda2       229M   31M  187M  14% /boot
/dev/sda1       120M  250K  119M   1% /boot/efi

In dieser Partition sollten sich die Dateien befinden, die UEFI zum Booten ausführt.

Wenn bei Verwendung einer dieser Methoden die entsprechenden Einträge nicht angezeigt werden, verwenden Sie wahrscheinlich kein UEFI.

derobert
quelle
6
/boot/efiist nur ein Verzeichnis in /bootund der Rest sind installierte Pakete - alle wären wahrscheinlich auf einem System vorhanden, das im UEFI-Modus installiert wurde, aber jetzt mit dem Kompatibilitäts-Support-Modul gebootet wird. Trotzdem ist das erste ziemlich sicher ... Sie können das Reittier der Efivarfs mit einer Art paranoider Option deaktivieren.
mikeserv
@mikeserv /boot/efiist ein Mount - Punkt , dass ich nicht sicher bin , braucht auch auf die Firmware falls montiert werden. ja, die bloße Anwesenheit eines Platzhalterordners dort bedeutet wenig bis gar nichts, und selbst wenn er Inhalte enthält, können diese derzeit nicht verwendet werden.
underscore_d
1
Diese Lösung (90 upvotes) spricht über /sys/firmware/efials zuverlässiger Indikator ... askubuntu.com/a/162896/479118 - so vielleicht, dass mehr zuverlässig ist?
Frank Nocke