Jak mogę sprawdzić, czy mój system został uruchomiony jako EFI / UEFI lub BIOS?

120

Jak ustalić, czy określony działający system Ubuntu został uruchomiony przy użyciu EFI / UEFI lub BIOS?

Omega
źródło
Interesujące pytanie. Nie jest to dokładny dupek, ale spróbuj odpowiedzieć tutaj , na podobne pytanie.
Tom Brossman,
1
unix.stackexchange.com/questions/148356/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

133

Najłatwiej jest sprawdzić, czy /sys/firmware/efiistnieje. Nie pojawia się, jeśli uruchomiłeś system przy użyciu tradycyjnego systemu BIOS.

#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Colin Ian King
źródło
Testowane na QEMU 2.0.0, OVFM i Ubuntu 14.04: github.com/cirosantilli/runlinux/tree/…
Ciro Santilli 事件 改造 中心 法轮功 六四 事件
Działa na Ubuntu 16.04 i Fedorze 24
geek1011
16

Przestarzałe

Odpowiedź poniżej to metoda, która nie zawsze może działać.
Zamiast tego użyj odpowiedzi Colina opartej na /sys/firmware/efi.


Bardzo łatwo jest stwierdzić, czy system został uruchomiony w EFI (czy nie, w takim przypadku musi to być BIOS):

Po prostu użyj dmesg | grep "EFI v"

  • Zwróci to taką linię, jeśli system został uruchomiony z EFI:

    [0,000000] EFI v2.00 autorstwa American Megatrends
  • Lub nie zwracaj niczego, jeśli tak nie było, w takim przypadku zostało uruchomione z systemu BIOS

Przykład użycia skryptu bash na podstawie kodu wyjścia grep :

...
dmesg | grep -q "EFI v" # -q powiedz grepowi, aby nic nie wyświetlał
jeśli [$? -eq 0] # sprawdź kod wyjścia; jeśli 0 EFI, w innym przypadku BIOS
następnie
    echo „Używasz rozruchu EFI.”
  jeszcze
    echo „Używasz systemu BIOS”
fi
...

Źródło: Aby dowiedzieć się, jak ustalić, czy system EFI korzysta z emulacji starszego systemu BIOS, czy nie, a także więcej informacji na temat testowania zgodności z EFI i EFI, a także ciągów znaków dla wielu dostawców / wersji EFI, zobacz tę stronę z szczyt deweloperów Ubuntu dla precyzyjnych .

ish
źródło
2
Uprościłbym to if dmesg | grep -Fq "EFI v"; then .... Nie ma sensu dodatkowo uruchamiać [polecenia, tylko po to, by sprawdzić sukces / porażkę. $?jest głównie przydatny do sprawdzania określonych błędów.
geirha
3
Jest to kruche, ponieważ nie ma gwarancji, że szukany ciąg zostanie wygenerowany przez żądaną funkcję.
Thorbjørn Ravn Andersen
1
@izx, każdy skrypt może napisać „EFI v” jako część czegoś innego. Jeśli tak się stanie na komputerze z systemem BIOS, byłby to wynik fałszywie dodatni.
Thorbjørn Ravn Andersen
2
Najlepiej nie grepować tekstu w dzienniku jądra, ponieważ może ulec zmianie. Najlepiej spojrzeć na / sys / firmware / efi
Colin Ian King
1
Chciałbym jednak wspomnieć, że jest to świetny sposób na uzyskanie wersji EFI!
Omega
0

Kod Python, aby sprawdzić, czy system jest uruchamiany z UEFI lub ROM BIOS:

import os, sys
def main ():
    if (os.path.exists ("/ sys / firmware / efi")):
        print "\ n \ n System jest uruchamiany z uefi!"
    jeszcze:
        print "\ n \ n System jest uruchamiany z BIOS-em ROM"
Główny()
sys.exit (0)
Shruti B.
źródło