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 .
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)
Odpowiedzi:
Najłatwiej jest sprawdzić, czy
/sys/firmware/efi
istnieje. Nie pojawia się, jeśli uruchomiłeś system przy użyciu tradycyjnego systemu BIOS.źródło
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:
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 :
źródło
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.Kod Python, aby sprawdzić, czy system jest uruchamiany z UEFI lub ROM BIOS:
źródło