Como verificar se estou usando o GRUB-EFI ou o GRUB-PC?

7

Estou executando o Ubuntu 14.04 em um chroot no ChromeOS, que usa um sistema UEFI. Para instalar o WinUSB para criar uma mídia de recuperação para o Windows, tive que alterar grub-efi-amd64 para grub-pc . O WinUSB realizou esse processo para mim. Pelo que sei, isso tornaria meu dispositivo incapaz de inicializar.

Em uma tentativa de corrigir isso, executei sudo apt-get install grub-efi , o que pode ter corrigido o problema, mas não quero reinicializá-lo para descobrir se estou errado.

Como eu iria verificar se o problema foi corrigido?

Foi-me dito que eu poderia executar sudo grub para inserir o shell do grub e, em seguida, echo $grub_install para dizer se estou usando grub-pc ou grub-efi-amd64 . No entanto, estou usando o GRUB 2.02 e o sudo grub parece estar obsoleto.

Como estou em um Chromebook, que sempre inicializa no ChromeOS, não tenho como acessar um shell do GRUB durante a inicialização.

Alguém pode me ajudar?

    
por snazzybouche 27.02.2017 / 01:04

1 resposta

3

Veja esta pergunta para determinar como seu computador foi inicializado:

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

Isso não é bastante o mesmo que a pergunta que você fez, e é por isso que não estou marcando sua pergunta como duplicata. Normalmente, o método de inicialização (BIOS vs. EFI) determina qual versão do GRUB foi a última a inicializar o computador. (Se você tiver outros carregadores de boot instalados, é claro, você poderia ter iniciado um deles; essa abordagem não fará distinção entre, digamos, o GRUB no modo EFI e o ELILO no modo EFI.)

Você pode verificar qual versão do pacote do GRUB está instalada usando o gerenciador de pacotes, como em:

dpkg -l | grep grub | grep ii

Carregadores de inicialização, como o GRUB, são incomuns, já que a instalação do pacote é diferente da inserção do carregador de boot no processo de inicialização. Normalmente, você instala o pacote Debian e usa seus arquivos para inserir o carregador de boot no processo de inicialização; mas o último pode ser feito sem um pacote, e um pacote pode ser instalado sem que o processo de inicialização seja alterado. De fato, no seu caso, você pode ter ambos as versões BIOS e EFI do GRUB disponíveis como opções de inicialização.

A maneira mais simples de verificar o que é acessível como opções de inicialização é usar o Script de Informações da Inicialização. Esse script produzirá um arquivo chamado RESULTS.txt que relatará quais carregadores de boot estão disponíveis; no entanto, requer algum conhecimento para interpretar a saída. Carregadores de inicialização no modo BIOS mostram algo assim, próximo ao topo da saída:

============================= Boot Info Summary: ===============================

 => Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 40 
    of the same hard drive for core.img, but core.img can not be found at this 
    location.

Carregadores de inicialização no modo EFI são armazenados como arquivos na partição do sistema EFI (ESP) . Esses arquivos serão exibidos na saída algo como isto:

sda1:     __________________________________________________________________________

    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /EFI/Boot/bootx64.efi /EFI/ubuntu/MokManager.efi 
                       /EFI/ubuntu/fwupx64.efi /EFI/ubuntu/grubx64.efi 
                       /EFI/ubuntu/shimx64.efi 
                       /EFI/Microsoft/Boot/bootmgfw.efi 
                       /EFI/Microsoft/Boot/bootx64.efi

Observe, em particular, o arquivo /EFI/ubuntu/grubx64.efi , que é o GRUB. ( /EFI/ubuntu/shimx64.efi manipula o Secure Boot e outros arquivos, especialmente em /EFI/ubuntu , também podem ser relevantes.) Se você estiver usando um carregador de inicialização EFI diferente do GRUB, ele também poderá aparecer em algum lugar.

Além disso, os carregadores de inicialização no modo EFI são normalmente referenciados por entradas armazenadas na NVRAM, que o Boot Info Script identificará por meio de execuções de efibootmgr :

=================== efibootmgr -v
BootCurrent: 0004
Timeout: 0 seconds
BootOrder: 0000,0002,2001,2003,2002
Boot0000* ubuntu    HD(1,GPT,249432ce-52fe-4533-b029-ba6c1a901382,0x800,0x100000)/File(EFIubuntushimx64.efi)
Boot0001* EFI Network 0 for IPv4 (68-F7-28-DA-88-B8)    PciRoot(0x0)/Pci(0x2,0x4)/Pci(0x0,0x0)/MAC(68f728da88b8,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)RC
Boot0002* Windows Boot Manager  HD(1,GPT,249432ce-52fe-4533-b029-ba6c1a901382,0x800,0x100000)/File(EFIMicrosoftBootbootmgfw.efi)RC
Boot0003* EFI Network 0 for IPv6 (68-F7-28-DA-88-B8)    PciRoot(0x0)/Pci(0x2,0x4)/Pci(0x0,0x0)/MAC(68f728da88b8,0)/IPv6([::]:<->[::]:,0,0)RC
Boot0004* EFI USB Device (Generic Flash Disk)   PciRoot(0x0)/Pci(0x12,0x0)/USB(0,0)/USB(0,0)/HD(1,MBR,0x4294967218,0x800,0x1f6a800)RC
Boot2001* EFI USB Device    RC
Boot2002* EFI DVD/CDROM RC
Boot2003* EFI Network   RC

Observe que efibootmgr é utilizável apenas em uma inicialização no modo EFI, portanto, se você inicializou no modo BIOS, não verá essa saída, mesmo que um carregador de inicialização EFI esteja disponível. Além disso, algumas EFIs são problemáticas e esquecem ou ignoram as entradas de inicialização EFI, mas elas geralmente ainda podem ser inicializadas no modo EFI usando várias soluções alternativas.

De qualquer forma, a saída efibootmgr parece assustadora e complexa, mas os pontos-chave são:

  • Se o GRUB estiver configurado corretamente, uma entrada Boot#### deve apontar para ele. No caso do Ubuntu, ele deve ser chamado de ubuntu , portanto, procure por ubuntu entry - Boot0000 neste caso. (O número pode ser qualquer valor hexadecimal).
  • BootOrder mostra a ordem em que as entradas de inicialização são tentadas. Nesse caso, 0000 é o primeiro, o que significa que a entrada Boot0000 ( ubuntu ) será tentada primeiro.

O ponto de tudo isso é que você pode ter versões do modo BIOS e do modo EFI do GRUB disponíveis para uso pelo firmware. Nesse caso, ambos serão exibidos na saída do Script de Informações de Inicialização e será difícil dizer qual deles será realmente usado. Para isso, verificar o seu modo de inicialização atual é a melhor abordagem. Ocasionalmente, pode ocorrer confusão ou você pode alternar de um modo de inicialização para outro. Remover os carregadores de inicialização redundantes pode ajudar a evitar confusões, mas isso pode ser arriscado - particularmente remover um carregador de inicialização no modo BIOS de um MBR, já que isso requer o uso de dd , que pode facilmente danificar seu disco se você cometer algum erro. Geralmente, é melhor deixar carregadores de inicialização não utilizados acessíveis ao firmware, em vez de se arriscarem a esses desastres.

    
por Rod Smith 28.02.2017 / 19:36