Slacktrek Linux

um blog sobre linux, software livre, shell script e afins

Reinstalando setor de boot UEFI com GRUB no Slackware

12 de jun de 2024 — SlackTrekBr

Recentemente tive um susto quando meu computador simplesmente se recusava a ligar após passar duas semanas completamente desligado. Como já havia sofrido antes com a maresia de onde moro concluí de imediato que ele havia sido outra vítima da mesma, mas pra minha surpresa era BIOS corrompida!


Eu já havia atualizado a BIOS dessa placa mãe há alguns anos, mas reverti a atualização pois ela se recusava a dar boot pelo disco nvme comprado justamente para guardar o sistema operacional e ganhar agilidade no carregamento dos processos e programas.
Sem muito tempo na época para saber o motivo de tal "revolta" eu fiz o downgrade da BIOS para manter meu sistema - já configurado e rodando perfeitamente - funcionando, já que não estava tendo dores de cabeça com a máquina.

Acontece que em um belo dia o Windows que havia instalado para atender a um cliente específico simplesmente começou a iniciar com verificação de discos até que não carregou mais independente do que fizesse.
Foi nesse momento que acreditei ser necessária uma formatação do disco com Windows e proceder à sua reinstalação.
Fiz os backups necessários via Linux e ao iniciar a instalação qual não foi minha surpresa ao perceber que ele não conseguia formatar o disco.
Tentei trocar o disco por outro - no caso 1Tb por outro de 480Gb - e nada!
Fui atrás de trocar então o Windows. Baixei a versão 11 mais atual e nada de novo! Instalação iniciava e na hora de formatar o HD ele apresentava um número de erro - quase sempre diferente da tentativa anterior.
Tentei então retroceder, coloquei um HD mecânico. Nada! Cheguei a testar inclusive uma velha cópia do Windows 7, mas o resultado foi o mesmo.
Com isso resolvi desistir de vez do Windows - já o utilizava bem raramente por conta daquele um cliente - e viver 100 no Linux.

Alguns meses depois fui fazer uma viagem de duas semanas, o que me deixaria distante do computador por este período, e qual não foi minha surpresa - desagradável - ao retornar e perceber que o computador não ligava. Mas como havia acabado de chegar de viagem resolvi não esquentar a cabeça e deixei isso para o dia seguinte.

No dia seguinte, sábado, passei quase toda a manhã testando as partes para tentar identificar o vilão da vez. Como já havia perdido eletrônicos antes - incluindo um Raspberry Pi - para maresia, imaginei que ela fosse a vilã novamente.
Desistindo recorri à ajuda de um técnico que já me salvou de outros perrengues parecidos, pois essa parte de eletrônica me escapa completamente.

Depois de analisar os componentes e meu relato ele julgou - corretamente - ser BIOS corrompida. Coisa que se confirmou. Após atualizá-la tudo voltou a funcionar, inclusive uma instalação do Windows que fez a meu pedido. O único porém foi de fato o boot pelo nvme que se perdeu, mas isso eu tentaria resolver depois.

Após receber a máquina fui tratar de ver se conseguia, de alguma forma, recuperar o boot do dispositivo. A outra opção que eu teria era de usar um outro SSD como boot, mas direcionando pros arquivos de sistema no nmve, pois ele era encontrado pela BIOS e demais sistemas operacionais, apenas o setor de boot não funcionava.
E felizmente consegui restaurar!

Ao que parece ao se atualizar uma BIOS cujo boot seja em UEFI - até onde me lembro não passei por isso utilizando boot em MBR - o setor se torna "invisível" para a nova versão da BIOS, embora esteja tudo lá.

A solução foi reinstalar o boot com grub - o gerenciador de boot mais utilizado pelas distros Linux, embora o Slackware venha com o Lilo por padrão - da mesma forma como instalei a primeira vez.
Primeiramente iniciei o sistema com uma versão live do Slackware e montei as partições do sistema em /mnt, onde /dev/nmve0n1p3 é a raiz do sistema, /dev/nmve0n1p2 é a pasta de boot e /dev/nmve0n1p1 o setor de boot UEFI:

mount /dev/nmve0n1p3 /mnt
mount /dev/nmve0n1p2 /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot/efi

Agora era preciso adentrar no sistema montado, para que ele seja operado através do live disc, mas antes as pastas de processos, sistema e dispositivos do sistema live atual precisavam ser "linkadas" às do sistema montado, para isso utilizados o comando mount como na postagem de reinstalação de arquivos corrompidos.

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

Agora sim podemos adentrar o sistema montado e instalar o gerenciador de boot:

chroot /mnt
grub-install --modules=lvm --boot-directory=/boot --target=x86_64-efi /dev/nvme0n1p1

Lembrando que dependendo da distribuição os comandos podem variar um pouco, juntamente com as opções dadas à eles.
No meu caso como particionei o disco em LVM precisei passar essa instrução do instalador do GRUB. O "target" foi só pra ter segurança de que ele iria instalar o arquivo de boot correto, coisa que ele acertava antes, mas seguro morreu de velho.
E por último o dispositivo onde o boot é lido, no caso a partição UEFI.

Depois disso feito a máquina ligou como se nada tivesse acontecido.
Foi meio desgastante, mas pelo menos aprendi algumas coisas novas e pude até reinstalar o Windows para quando necessitar de algo bem específico dele - como jogar paciência. XD

Funcionário público jogando paciência
Como reinstalar o GRUB manualmente quando a máquina perdeu o boot UEFI.
Aqui vamos reinstalar o GRUB na unha com o Slackware em uma máquina com boot UEFI cuja BIOS não inicia após atualização.
0.7

Tags: casos-de-ti, linux, slackware