Como corrigir erro de inicialização do Linux no BIOS

0
16


fatmawati achmad zaenuri / Shutterstock.com

As atualizações do GRUB são conhecidas por fazer com que os computadores Linux inicializem nas configurações do BIOS ou UEFI. A solução para isso aproveita um truque útil de recuperação do sistema que você realmente deve 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 gramaS suanificado bbaixar carregador

Um gerenciador de inicialização é um aplicativo que inicia o processo de inicialização quando o computador é ligado. É necessário iniciar várias ferramentas de software e utilitários, a partir da partição correta e na ordem correta, para finalmente resultar em um sistema operacional funcional 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 mudanças no código GRUB 2: 2.06.r322 adicionou suporte para uma nova opção GRUB, --is-supported. A opção é usada para indicar se um recurso de inicialização de firmware está ou não presente. Nesse caso, o GRUB adiciona uma entrada ao menu de inicialização para permitir que você inicie a configuração EUFI.

A nova opção foi referenciada em um script chamado “30_uefi-firmware.in”. A diferença para este arquivo mostra que um if Declaração removida e adicionadas duas linhas.

Uma das novas linhas foi uma substituição if declaração. A outra nova linha contém fwsetup --is-supported . O “fw” em “fwsetup” significa firmware. Mas porque essa linha é Acima o novo if comando, ele sempre será executado. Se estivesse dentro do corpo do if instrução que só seria executada quando o teste no if declaração resolvida como verdadeira.

Isso causou problemas em muitos computadores UEFI, mas não em todos. 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 seria concluído, mas reiniciaria continuamente ou o computador inicializaria diretamente na configuração do firmware UEFI. De qualquer forma, não havia como forçar seu computador a inicializar no Linux.

Quando confrontado 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 consegue inicializar ou fazer login no seu computador Linux.

A técnica que usaremos

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

Não vamos instalar nada, então a mídia ao vivo não precisa ser a mesma distribuição que você instalou no 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 pendrive ou 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 Linux que foi inicializado a partir da mídia ao vivo. Isso é genial. Se pudermos acessá-lo, temos a possibilidade de repará-lo. Mas coloca um problema.

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 com que os caminhos de arquivo configurados em seu sistema Linux se refiram aos locais de destino corretos, em algum lugar dentro do sistema de arquivos, e não em algum lugar relativo à raiz do Linux ativo, precisamos usar chroot para definir uma nova raiz apontando para a raiz do seu instalado sistema de arquivos 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 ext4 sistema de arquivos, 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 danificado a partir daí. A distribuição que usamos foi o EndeavourOS. A mídia ao vivo do EndeavorOS é inicializada no ambiente de desktop XFCE 4.

Mídia ao vivo do EndeavorOS inicializada no ambiente de desktop XFCE

Para identificar quais partições contêm a raiz do seu sistema de arquivos e qual é a partição de inicialização, abra uma janela de terminal e use o fdisk domínio. estamos usando o -l (listar partição). você terá que usar sudotambé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 como “Sistema EFI” e “Sistema de Arquivos Linux”.

A saída do comando sudo fdisk -l com as partições root e boot destacadas

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

No seu computador, eles podem estar em diferentes discos rígidos e partições. Tenha cuidado para observar as partições em que estão, precisaremos usá-las nos comandos a seguir.

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

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

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

Para fazer com que a raiz efetiva do sistema de arquivos comece na raiz do seu sistema de arquivos instalado real, 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 que 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 /home
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 apenas um usuário, chamado “dave”. se nós tivéssemos usado cd /home antes de usarmos o chroot comando, teríamos entrado no diretório “/home” do sistema de arquivos ao vivo.

Só para esclarecer, agora você está fazendo login seu sistema de arquivos real como ele raiz usuário, então tenha cuidado.

Para corrigir o problema com o GRUB 2: 2.06.r322, tudo o que tivemos que fazer foi executar o grub-install domínio.

grub-install

Execute o comando grub-install para corrigir a falha de inicialização do GRUB no BIOS

Corre grub-install Cegar 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 da sua distribuição para encontrar a solução certa para o seu problema. Se for uma reclamação geral, em breve você encontrará uma solução.

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

RELACIONADO: Como copiar arquivos usando o comando “install” no Linux