Questão Como verificar se o GRUB está no modo EFI ou BIOS?


Existe um comando no shell do grub que indicaria se a máquina está apresentando o firmware EFI ou BIOS?

Estou usando o GRUB 2.00 em um 2010 Mac Pro. Este computador tem firmware EFI, claro. Mas eu tenho tentado por alguns dias fazê-lo inicializar o Ubuntu no modo de emulação da BIOS por falta de drivers de vídeo da NVIDIA. Meu entendimento é que, no momento em que o GRUB está em execução, a decisão de usar a emulação de EFI ou BIOS já foi tomada. Então, como posso verificar no GRUB?


1
2018-01-03 22:51


origem




Respostas:


A partir do GRUB 2.00, supondo que o GRUB esteja funcionando bem o suficiente para entrar no modo normal em vez do modo de recuperação, "echo $ grub_platform" do shell GRUB mostrará "pc" no modo BIOS e "efi" no modo UEFI.

A compilação do BIOS corresponde ao pacote grub-pc, e a compilação do UEFI corresponde ao pacote grub-efi-amd64 (ou, menos comumente, grub-efi-ia32).


2
2018-01-04 02:32



Obrigado. Eu apenas tentei sair direto do Live CD (no USB) e recebi "efi". Este é um bom diagnóstico, porque o meu entendimento é que o Ubuntu não será carregado no modo BIOS após essa indicação. Agora, para descobrir como obter "pc" ... Pode haver um pouco de espaço de manobra aqui. Eu vejo que a documentação do grub_platform diz que indica a plataforma para a qual o GRUB foi construído. Parece provável que as ideias sejam equivalentes a mim, mas não sou especialista aqui. Eu não acho que a versão "efi" do GRUB rodaria no modo BIOS, certo? - NoahR
Corrigir; Cada build do GRUB usa chamadas de firmware específicas para o tipo de firmware da plataforma. Para inicializar um stick USB ao vivo no modo BIOS, você precisará procurar uma opção adequada no nível do firmware; em um Mac, talvez envolva o Boot Camp, mas já faz muito tempo desde que eu olhei para um desses. Observe que ao inicializar uma imagem Ubuntu ao vivo (em oposição a um sistema instalado) no modo BIOS, você obterá ISOLINUX em vez de GRUB. - Colin Watson
Como posso usar uma declaração if com isso? eu tentei if [ ${$grub_platform} == "pc" ] { ... }, mas não funcionou - sempre foi avaliado como verdadeiro. - starbeamrainbowlabs
Essa sintaxe está errada de várias maneiras. if [ ${grub_platform} == "pc" ]; then ...; fi é mais provável que funcione. - Colin Watson