Como saber se estou inicializando usando o UEFI?

54

Eu estava pesquisando, mas não encontrei uma maneira óbvia de saber se o GRUB está usando UEFI na inicialização do sistema, ou no modo de compatibilidade do BIOS ou em um BIOS de pleno direito. Encontrei apenas métodos do Windows . Existe algo no GRUB ou nos logs de inicialização do Kernel que mostram se estou usando UEFI, EFI ou BIOS?

Braiam
fonte
Não tenho tempo para procurar a resposta, mas também tenho pesquisado muitos problemas na UEFI ultimamente. Este site é bastante útil para entender a UEFI. rodsbooks.com/refind/index.html
0xSheepdog
11
Não pretendo parecer esperto, mas o que o firmware da máquina está definido para fazer?
Ericx
11
@ ericx, esta pergunta está sob o pretexto de que você não tem idéia de como verificá-la. É por isso que todas as soluções podem ser feitas em um sistema inicializado.
Braiam
11
askubuntu.com/questions/162564/…
Ciro Santilli escreveu

Respostas:

34

Se você inicializou usando o firmware UEFI, em vez de usar o firmware BIOS, seu sistema deve disponibilizar as variáveis ​​EFI NVRAM em:

/sys/firmware/efi/vars/

ou

/sys/firmware/efi/efivars/

Ao inicializar usando um BIOS (ou o modo de emulação de BIOS do firmware UEFI), essas variáveis ​​não estão disponíveis.

De fato, como @Santropedro apontou, o caminho

/sys/firmware/efi

está ausente ao inicializar usando um BIOS, o que é mais fácil de verificar.

garethTheRed
fonte
+1 para um método muito mais rápido e direto ao ponto, em vez de depender de uma saída de string específica do firmware ou de pacotes adicionais que podem não ser diretamente relevantes na inicialização atual.
Underscore_d
3
O que significa "variáveis ​​não disponíveis"? É suficiente verificar se não há pastas dentro: / sys / firmware / chamado "efi"?
Santropedro 13/01
@ Santropedro - parece que sim. Eu vou editar a postagem. Obrigado.
garethTheRed
42

Primeiro método:

Ok, eu inicializei minha caixa UEFI para verificar. Primeira pista, perto do topo da dmesg. Isso não deve aparecer se você for inicializado via 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)
⋮


Segundo método:

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

Se não estiver, o seguinte deve aparecer:

$ sudo efibootmgr        

EFI variables are not supported on this system.

Observe que você precisará ter o pacote efibootmgr instalado. Você também pode tentar listar as variáveis ​​EFI:

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


Terceiro método:

Verifique se você possui /boot/efi:

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

Dentro dessa partição devem estar os arquivos que o UEFI executa para inicializar.

Se usando qualquer um desses métodos, as entradas relevantes não aparecerem, é muito provável que você não esteja usando UEFI.

derobert
fonte
6
/boot/efié apenas um diretório /boote o restante são pacotes instalados - todos provavelmente existiriam em um sistema que foi instalado no modo UEFI, mas agora é inicializado com o módulo de suporte à compatibilidade. Ainda assim, o primeiro é bastante seguro ... Você pode desativar a montagem do efivarfs com algum tipo de opção paranóica.
mikeserv
O @mikeserv /boot/efié um ponto de montagem que não tenho certeza de que precisa ser montado, mesmo que seja relevante para o firmware. então sim, a mera presença de uma pasta de espaço reservado significa pouco ou nada e, mesmo que tenha conteúdo, elas podem não ser usadas no momento.
Underscore_d
11
Esta solução (90 upvotes) se refere /sys/firmware/eficomo um indicador confiável ... askubuntu.com/a/162896/479118 - então talvez isso seja mais confiável?
22818 Frank Nocke #