Como posso saber se meu sistema foi inicializado como EFI / UEFI ou BIOS?

120

Como determinar se um sistema Ubuntu em execução específico foi inicializado usando EFI / UEFI ou BIOS?

Ómega
fonte
Pergunta interessante. Não é um idiota exato, mas tente a resposta aqui , para uma pergunta semelhante.
Tom Brossman

Respostas:

133

A maneira mais fácil é verificar se /sys/firmware/efiexiste. Não aparece se você inicializou usando o BIOS tradicional.

#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Colin Ian King
fonte
Testado no QEMU 2.0.0, OVFM e Ubuntu 14.04: github.com/cirosantilli/runlinux/tree/…
Ciro Santilli
Funciona no Ubuntu 16.04 e Fedora 24
geek1011 23/06
16

Descontinuada

A resposta abaixo é um método que nem sempre funciona.
Em vez disso, use a resposta de Colin com base em /sys/firmware/efi.


É muito fácil saber se um sistema foi inicializado no EFI (ou não, nesse caso, deve ser o BIOS):

Apenas use dmesg | grep "EFI v"

  • Isso retornará uma linha como esta, se o sistema foi inicializado a partir do EFI:

    [0.000000] EFI v2.00 da American Megatrends
  • Ou não devolva nada, se não foi, caso em que foi inicializado a partir do BIOS

Exemplo de uso do script bash com base no código de saída do grep :

...
dmesg grep -q "EFI v" # -q diz ao grep para não gerar nada
se [$? -eq 0] # verifica o código de saída; se 0 EFI, senão BIOS
então
    eco "Você está usando a inicialização EFI."
  outro
    eco "Você está usando a inicialização do BIOS"
fi
...

Fonte: para saber como determinar se um sistema EFI está usando ou emulação de BIOS herdado ou não, além de mais informações sobre o teste de compatibilidade com EFI e EFI, juntamente com as sequências de vários fornecedores / versões de EFI, consulte esta página em o Ubuntu Developer Summit for Precise .

ish
fonte
2
Eu simplificaria isso if dmesg | grep -Fq "EFI v"; then .... [Além disso, não faz sentido executar o comando, apenas para testar o sucesso / falha. $?é útil principalmente para verificar erros específicos.
geirha
3
Isso é frágil, pois não há garantia de que a sequência pesquisada seja gerada pelo recurso desejado.
Thorbjørn Ravn Andersen
1
@izx, qualquer script pode escrever "EFI v" como parte de outra coisa. Se isso acontecer em uma máquina BIOS, isso seria um falso positivo.
Thorbjørn Ravn Andersen
2
É melhor não receber texto no log do kernel, pois está sujeito a alterações. Melhor olhar para / sys / firmware / efi
Colin Ian rei
1
No entanto, gostaria de mencionar que esta é uma ótima maneira de obter a versão EFI!
Omega
0

Código Python para verificar se o sistema foi inicializado com UEFI ou ROM BIOS:

import os, sys
def main ():
    if (os.path.exists ("/ sys / firmware / efi")):
        print "\ n \ n O sistema é inicializado com o uefi!"
    outro:
        print "\ n \ n O sistema é inicializado com rom bios"
a Principal()
sys.exit (0)
Shruti B
fonte