Como corrigir o Linux inicializa no erro do BIOS

Publicados: 2022-09-28
Laptop em um fundo azul mostrando um prompt de comando do Linux.
fatmawati achmad zaenuri/Shutterstock.com

Sabe-se que as atualizações do GRUB resultam em computadores Linux inicializando nas configurações do BIOS ou UEFI. A correção para isso tira proveito de um truque útil de recuperação do sistema que você realmente deveria conhecer.

Um Estudo de Caso: GRUB 2:2.06.r322

Uma atualização do sistema para distribuições Linux baseadas em Arch e Arch no verão de 2022 incluiu uma nova versão do GRUB. GRUB significa gr e bootloader unificado .

Um carregador de inicialização é um aplicativo que inicia o processo de inicialização quando o computador é ligado. Várias ferramentas de software e utilitários precisam ser iniciados - da partição certa e na ordem certa - para eventualmente resultar em um sistema operacional operacional e acessível. O GRUB inicia essa cascata de eventos.

Se você tiver mais de um sistema operacional instalado em seu computador, o GRUB fornece um menu para que você possa selecionar qual sistema operacional usar. Uma das alterações de código para o GRUB 2:2.06.r322 adicionou suporte para uma nova opção do GRUB, --is-supported . A opção é usada para indicar se um recurso de inicialização para firmware está presente ou não. Se for, o GRUB adiciona uma entrada ao menu de inicialização para permitir que você inicialize nas configurações do EUFI.

A nova opção foi referenciada em um script chamado “30_uefi-firmware.in”. O diff para este arquivo mostra que uma instrução if foi removida e duas linhas foram adicionadas.

Uma das novas linhas foi uma substituição do comando if . A outra nova linha contém fwsetup --is-supported . O “fw” em “fwsetup” significa firmware. Mas como essa linha está acima da nova instrução if , ela sempre será executada. Se estivesse dentro do corpo da instrução if , ele só seria executado quando o teste na instrução if resolvido para true.

O que é UEFI e como é diferente do BIOS?
RELACIONADO O que é UEFI e como é diferente do BIOS?

Isso causou problemas em muitos, mas não em todos os computadores UEFI. Dependia se a versão do GRUB que você já instalou suportava este comando. As máquinas afetadas fariam uma de duas coisas. Eles entrariam em um loop de inicialização em que o processo de inicialização nunca foi concluído, mas reiniciado continuamente, ou o computador inicializou diretamente nas configurações de firmware UEFI. De qualquer forma, não havia como forçar seu computador a inicializar no Linux.

Quando você se depara com situações como essa, sempre há a opção nuclear de fazer uma reinstalação completa. Isso funcionará, mas dependendo de como seu disco rígido foi particionado, sem um backup recente, você poderá perder dados.

O método de baixo impacto usa chroot e um Live USB ou Live CD/DVD. Esta é uma boa técnica para entender e ter na manga para todos os tipos de falhas do sistema quando você não pode inicializar ou fazer login no seu computador Linux.

A Técnica que Usaremos

Para usar essa técnica, você precisa ter um USB inicializável ou um CD/DVD com uma distribuição Linux nele, que inicialize em uma instância Linux ativa. Normalmente, eles são chamados de Live USB ou Live CD/DVD. Todas as principais distribuições suportam esta função.

Como criar uma unidade USB Live Ubuntu com armazenamento persistente
RELACIONADO Como criar uma unidade USB Live Ubuntu com armazenamento persistente

Não vamos instalar nada, então a mídia ao vivo não precisa ser a mesma distribuição que você instalou em seu computador. Você pode usar um Ubuntu USB para reparar um computador EndeavourOS, por exemplo. Se você não tiver acesso a nenhuma mídia ao vivo, precisará usar outro computador para baixar uma imagem e gravá-la em um cartão de memória USB ou em um CD/DVD.

Ao inicializar a partir da mídia ao vivo, você poderá montar e acessar seu sistema de arquivos existente. Seu sistema de arquivos instalado aparecerá como parte do sistema de arquivos do Linux que foi inicializado a partir da mídia ao vivo. Isso é ótimo. Se pudermos acessá-lo, temos uma chance de repará-lo. Mas levanta uma questão.

Como usar o comando chroot no Linux
RELACIONADO Como usar o comando chroot no Linux

A raiz desse sistema de arquivos híbrido é a raiz do sistema de arquivos de mídia ao vivo, não a raiz do sistema de arquivos instalado. Para fazer os caminhos de arquivo configurados em seu sistema Linux referenciarem seus locais de destino corretos - em algum lugar dentro de seu sistema de arquivos, e não em algum lugar relativo à raiz do Linux ativo - precisamos usar chroot para definir uma nova raiz que aponte para a raiz de seu sistema de arquivos instalado . Em outras palavras, os caminhos que começam com “/” usarão a raiz do seu sistema de arquivos como ponto de partida.

O computador de teste que usamos para isso usa o sistema de arquivos ext4 , mas você também pode usar essa técnica em outros sistemas de arquivos. Você só precisa identificar quais partições ou volumes você precisa montar e onde montá-los. Os princípios são os mesmos.

Colocando em prática

Criamos uma unidade USB inicializável e inicializamos nosso computador afetado a partir dela. A distribuição que usamos foi o EndeavourOS. A mídia ao vivo do EndeavourOS é inicializada no ambiente de desktop XFCE 4.

A mídia ao vivo do EndeavourOS inicializou no ambiente de desktop XFCE

Para identificar quais partições mantêm a raiz do seu sistema de arquivos e qual é a partição de inicialização, abra uma janela de terminal e use o comando fdisk . Estamos usando a opção -l (list partition). Você precisará usar sudo , também.

 sudo fdisk -l 

Usando o comando sudo fdisk -l para listar partições e dispositivos

Percorra a saída até ver as entradas rotuladas “EFI System” e “Linux filesystem”.

A saída do comando sudo fdisk -l com as partições de inicialização e raiz destacadas

Neste computador, ambos estão no disco rígido sda . Eles estão nas partições um e dois, conforme indicado pelos rótulos de partição /dev/sda1 e /dev/sda2 .

No seu computador, eles podem estar em diferentes discos rígidos e partições. Tome cuidado para anotar as partições em que estão, precisaremos usá-las nos próximos comandos.

Precisamos montar os sistemas de arquivos nessas partições anexando-os ao sistema de arquivos ativo. O comando mount fará isso por nós. Lembre-se, seus rótulos de partição provavelmente serão diferentes, portanto, certifique-se de usar os dos resultados do seu comando fdisk .

 sudo mount /dev/sda2 /mnt
 sudo mount /dev/sda1 /mnt/boot/efi 

Montando os sistemas de arquivos raiz do sistema de arquivos e inicialização

Para fazer a raiz efetiva do sistema de arquivos iniciar na raiz do seu sistema de arquivos real instalado, usaremos chroot para definir a raiz como o ponto de montagem “/mnt”. É aqui que a raiz do sistema de arquivos instalado é enxertada no sistema de arquivos ativo.

 sudo chroot /mnt 

Usando o comando chroot para criar uma nova raiz efetiva

Observe que o prompt de comando muda para mostrar que agora você está efetivamente logado como root e está no diretório raiz “/” do sistema de arquivos do seu computador.

Podemos testar isso facilmente, mudando para o diretório “/home” e verificando quais diretórios existem dentro dele.

 cd/casa
 ls 

Usando ls para listar contas de usuário

Você deve ver um diretório para cada usuário configurado em seu computador, incluindo um para sua própria conta de usuário. Este computador tem um único usuário, chamado “dave”. Se tivéssemos usado cd /home antes de usarmos o comando chroot , teríamos entrado no diretório “/home” do sistema de arquivos ao vivo.

Só para esclarecer, agora você está acessando seu sistema de arquivos real como usuário root , portanto, tenha cuidado.

Para corrigir o problema com o GRUB 2:2.06.r322, tudo o que precisávamos fazer era executar o comando grub-install .

 grub-instalar 

Executando o comando grub-install para corrigir o erro de inicialização do GRUB para o BIOS

Executar grub-install cegamente como este geralmente não é recomendado. Neste caso, é o que era necessário.

Reparar ou substituir

Se você estiver tentando corrigir um problema diferente, precisará verificar os fóruns de sua distribuição para obter a correção apropriada para seu problema. Se for uma reclamação generalizada, em breve você encontrará uma solução para ela.

No mínimo, agora que você pode acessar seu sistema de arquivos, pode copiar seus dados para alguma mídia removível. Se você decidir fazer uma reinstalação completa, não perderá dados.

RELACIONADO: Como copiar arquivos usando o comando "install" no Linux