Come sapere se sto avviando con UEFI?


54

Stavo cercando, ma non ho trovato un modo ovvio per sapere se GRUB utilizza UEFI all'avvio del sistema, o la modalità di compatibilità del BIOS o un BIOS completo. Ho trovato solo metodi di Windows . C'è qualcosa in GRUB o nei log di avvio del kernel che mostrano se sto usando UEFI, EFI o BIOS?


Non ho il tempo di cercare la risposta, ma ultimamente ho svolto anche molte attività di risoluzione dei problemi UEFI. Questo sito è molto utile per comprendere UEFI. rodsbooks.com/refind/index.html
0xSheepdog

1
Non intendo sembrare smarmy, ma che cosa farà il firmware della macchina?
ericx,

1
@ericx questa domanda è sotto la pretesa che tu non abbia idea di come verificarlo. Ecco perché tutte le soluzioni possono essere eseguite su un sistema avviato.
Braiam,

Risposte:


34

Se hai eseguito l'avvio utilizzando il firmware UEFI anziché utilizzare il firmware BIOS, il tuo sistema dovrebbe rendere disponibili le variabili EFI NVRAM in:

/sys/firmware/efi/vars/

o

/sys/firmware/efi/efivars/

Quando si avvia utilizzando un BIOS (o la modalità di emulazione BIOS del firmware UEFI), queste variabili non sono disponibili.

Infatti, come ha sottolineato @Santropedro, il percorso

/sys/firmware/efi

manca quando si avvia utilizzando un BIOS, che è più facile da controllare.


+1 per un metodo che è molto più veloce e arriva direttamente al punto, piuttosto che dipendere da un particolare output di stringa dal firmware o da pacchetti aggiuntivi che potrebbero non essere direttamente rilevanti nell'avvio corrente.
underscore_d

3
Cosa significa "variabili non disponibili"? Basta controllare che non ci siano cartelle all'interno: / sys / firmware / chiamato "efi"?
Santropedro,

@Santropedro - sembra che lo faccia. Modifica il post. Grazie.
GarethTheRed,

42

Primo metodo:

Ok, ho avviato la mia casella UEFI per controllare. Primo indizio, vicino alla cima di dmesg. Questo non dovrebbe apparire se sei avviato tramite 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)
⋮


Secondo metodo:

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

In caso contrario, dovrebbe apparire quanto segue:

$ sudo efibootmgr        

EFI variables are not supported on this system.

Nota che dovrai avere installato il pacchetto efibootmgr. Puoi anche provare a elencare le variabili EFI:

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


Terzo metodo:

Controlla se hai un /boot/efi:

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

All'interno di quella partizione dovrebbero essere presenti i file che UEFI esegue per l'avvio.

Se si utilizza uno di questi metodi le voci pertinenti non vengono visualizzate, è molto probabile che non si stia utilizzando UEFI.


6
/boot/efiè solo una directory dentro /boote il resto sono pacchetti installati - probabilmente tutti esisterebbero su un sistema che era installato in modalità UEFI, ma ora è avviato con il modulo di supporto compatibilità. Tuttavia, il primo è abbastanza sicuro ... Puoi disabilitare il mount degli efivarfs con una sorta di opzione paranoica.
Mikeserv,

@mikeserv /boot/efiè un punto di montaggio che non sono sicuro esigenze per essere montato anche se rilevanti per il firmware. quindi sì, la semplice presenza di una cartella segnaposto significa poco o nulla, e anche se ha dei contenuti, quelli al momento potrebbero non essere usati.
underscore_d

1
Questa soluzione (90 voti) parla di /sys/firmware/efiun indicatore affidabile ... askubuntu.com/a/162896/479118 - quindi forse è più affidabile?
Frank Nocke,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.