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 .
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)
Antworten:
Am einfachsten ist es, zu überprüfen, ob
/sys/firmware/efi
vorhanden ist. Es wird nicht angezeigt, wenn Sie mit dem herkömmlichen BIOS gestartet haben.quelle
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:
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 :
quelle
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.Python-Code, um zu überprüfen, ob das System mit UEFI oder ROM BIOS gestartet wurde:
quelle