Jak się dowiedzieć, czy uruchamiam za pomocą UEFI?

54

Szukałem, ale nie znalazłem oczywistego sposobu, aby wiedzieć, czy GRUB używa UEFI podczas rozruchu systemu, czy w trybie zgodności z BIOS-em, czy też w pełnym systemie BIOS. Znalazłem tylko metody Windows . Czy jest coś w GRUB lub dziennikach rozruchu jądra, które pokazują, czy używam UEFI, EFI lub BIOS?

Braiam
źródło
Nie mam czasu na szukanie odpowiedzi, ale ostatnio również dużo rozwiązywałem problemy z UEFI. Ta strona jest bardzo pomocna w zrozumieniu UEFI. rodsbooks.com/refind/index.html
0xSheepdog
1
Nie chcę brzmieć smarmy, ale do czego służy oprogramowanie układowe urządzenia?
ericx
1
@ericx to pytanie jest pod pozorem, że nie masz pojęcia, jak to sprawdzić. Dlatego wszystkie rozwiązania można wykonać w systemie rozruchowym.
Braiam
1
askubuntu.com/questions/162564/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

34

Jeśli uruchomiłeś przy użyciu oprogramowania układowego UEFI, a nie oprogramowania układowego BIOS, system powinien udostępnić zmienne EFI NVRAM w:

/sys/firmware/efi/vars/

lub

/sys/firmware/efi/efivars/

Podczas uruchamiania przy użyciu systemu BIOS (lub trybu emulacji BIOS oprogramowania układowego UEFI) te zmienne nie są dostępne.

W rzeczywistości, jak wskazał @ Santropedro, ścieżka

/sys/firmware/efi

podczas uruchamiania systemu BIOS brakuje go, co jest łatwiejsze do sprawdzenia.

garethTheRed
źródło
+1 dla metody, która jest znacznie szybsza i przechodzi od razu do rzeczy, zamiast zależeć od konkretnego ciągu wyjściowego z oprogramowania układowego lub dodatkowych pakietów, które mogą nie mieć bezpośredniego znaczenia w bieżącym rozruchu.
underscore_d
3
Co oznacza „zmienne niedostępne”? Wystarczy sprawdzić, czy w środku nie ma folderów: / sys / firmware / o nazwie „efi”?
Santropedro
@ Santropedro - wydaje się, że tak. Zmienię post. Dziękuję Ci.
garethTheRed
42

Pierwsza metoda:

Ok, uruchomiłem moją skrzynkę UEFI, aby sprawdzić. Pierwsza wskazówka, w pobliżu szczytu dmesg. Nie powinno się to pojawiać, jeśli uruchamiasz się przez BIOS:

[    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)
⋮


Druga metoda:

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

Jeśli tak nie jest, powinny pojawić się następujące elementy:

$ sudo efibootmgr        

EFI variables are not supported on this system.

Pamiętaj, że musisz mieć zainstalowany pakiet efibootmgr. Możesz także spróbować wyświetlić listę zmiennych EFI:

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


Trzecia metoda:

Sprawdź, czy masz /boot/efi:

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

Wewnątrz tej partycji powinny znajdować się pliki, które UEFI wykonuje w celu uruchomienia.

Jeśli użyjesz którejkolwiek z tych metod, odpowiednie wpisy się nie pojawią, jest bardzo prawdopodobne, że nie używasz UEFI.

derobert
źródło
6
/boot/efito tylko część katalogu, /boota reszta to zainstalowane pakiety - wszystkie prawdopodobnie istniałyby w systemie, który został zainstalowany w trybie UEFI, ale teraz jest uruchamiany z modułem obsługującym kompatybilność. Mimo to pierwszy jest całkiem pewny ... Możesz zablokować mocowanie efivarfów za pomocą jakiejś opcji paranoicznej.
mikeserv
@mikeserv /boot/efito punkt montowania, którego nie jestem pewien, czy trzeba go zamontować, nawet jeśli jest to istotne dla oprogramowania układowego. więc tak, sama obecność folderu zastępczego niewiele znaczy nic, a nawet jeśli zawiera zawartość, nie można ich obecnie używać.
underscore_d
1
To rozwiązanie (90 głosów pozytywnych) mówi o tym /sys/firmware/efijako o wiarygodnym wskaźniku ... askubuntu.com/a/162896/479118 - więc może jest to bardziej niezawodne?
Frank Nocke,