Wie kann ich feststellen, ob mein System als EFI / UEFI oder BIOS gestartet wurde?

120

Wie kann ich feststellen, ob ein bestimmtes Ubuntu-System mit EFI / UEFI oder BIOS gestartet wurde?

Omega
quelle
Interessante Frage. Keine exakte Betrogene aber versuchen , die Antwort hier , auf eine ähnliche Frage.
Tom Brossman

Antworten:

133

Am einfachsten ist es, zu überprüfen, ob /sys/firmware/efivorhanden ist. Es wird nicht angezeigt, wenn Sie mit dem herkömmlichen BIOS gestartet haben.

#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Colin Ian King
quelle
Getestet auf QEMU 2.0.0, OVFM und Ubuntu 14.04: github.com/cirosantilli/runlinux/tree/…
Ciro Santilli
Funktioniert auf Ubuntu 16.04 und Fedora 24
Geek1011
16

Veraltet

Die folgende Antwort ist eine Methode, die möglicherweise nicht immer funktioniert.
Verwenden Sie stattdessen Colins Antwort basierend auf /sys/firmware/efi.


Es ist sehr einfach festzustellen, ob ein System in EFI gestartet wurde (oder nicht, in diesem Fall muss es sich um ein BIOS handeln):

Benutz einfach dmesg | grep "EFI v"

  • Dies wird eine Zeile wie diese zurückgeben, wenn das System von EFI gebootet wurde:

    [0.000000] EFI v2.00 von American Megatrends
  • Oder geben Sie nichts zurück, wenn dies nicht der Fall ist. In diesem Fall wurde vom BIOS gebootet

Beispiel für die Verwendung von Bash-Skripten basierend auf dem Exit-Code von grep :

...
dmesg | grep -q "EFI v" # -q weist grep an, nichts auszugeben
wenn [$? -eq 0] # Exit-Code prüfen; wenn 0 EFI, sonst BIOS
dann
    echo "Sie verwenden EFI-Boot."
  sonst
    Echo "Sie verwenden BIOS-Boot"
fi
...

Quelle: Wie Sie feststellen können, ob ein EFI-System eine Legacy-BIOS-Emulation verwendet oder nicht, sowie weitere Informationen zum Testen der EFI- und EFI-Kompatibilität sowie die Zeichenfolgen für eine Reihe von EFI-Anbietern / -Versionen finden Sie auf dieser Seite von der Ubuntu Developer Summit for Precise .

ish
quelle
2
Ich würde das zu vereinfachen if dmesg | grep -Fq "EFI v"; then .... Es macht keinen Sinn, den [Befehl zusätzlich auszuführen, nur um auf Erfolg / Misserfolg zu testen. $?ist hauptsächlich nützlich, um nach bestimmten Fehlern zu suchen.
Geirha
3
Dies ist spröde, da nicht garantiert wird, dass die gesuchte Zeichenfolge von der gewünschten Funktion generiert wird.
Thorbjørn Ravn Andersen
1
@izx, jedes Skript kann "EFI v" als Teil von etwas anderem schreiben. Wenn dies auf einem BIOS-Computer geschieht, ist dies ein falsches positives Ergebnis.
Thorbjørn Ravn Andersen
2
Es wird empfohlen, nicht nach Text im Kernel-Protokoll zu suchen, da dies Änderungen unterliegen kann. Am besten schauen Sie sich / sys / firmware / efi an
Colin Ian King
1
Ich möchte jedoch erwähnen, dass dies eine großartige Möglichkeit ist, die EFI-Version zu erhalten!
Omega
0

Python-Code, um zu überprüfen, ob das System mit UEFI oder ROM BIOS gestartet wurde:

importieren os, sys
def main ():
    if (os.path.exists ("/ sys / firmware / efi")):
        print "\ n \ n System wird mit uefi gebootet!"
    sonst:
        print "\ n \ n System wird mit Rom-BIOS gebootet"
Main()
sys.exit (0)
Shruti B
quelle