quarta-feira, 14 de janeiro de 2026

Recuperando o Grub no Debian

Recuperando o Grub no Debian

    De vez em quando pode ocorrer da máquina do usuário ficar sem o boot, normalmente devido aos "testes de desempenho" que muitas vezes o próprio usuário faz para conseguir mais desempenho frente ao que o hardware pode entregar na configuração padrão do sistema; eu mesmo sou um desses usuários que tenta tirar água de pedra do meu equipamento e os procedimentos e resultados - bons e ruins - coloco no meu canal do Youtube.

    Para fazer a recuperação do Debian e agregados há a necessidade de usar um liveusb de uma distro baseada nele ou até mesmo o liveusb de instalação do próprio Debian. Aqui vou mostrar como fazer isso a partir de um liveusb, dá pra baixar uma ISO dessas com Gnome ou outra interface gráfica plenamente funcional no site do Debian.

    Basta criar o pendrive butável, dar boot na máquina por ele, abrir o Terminal e seguir a sequência de comandos abaixo, primeiro para máquinas MBR. Vamos descobrir qual a (ou as) partição presente no disco:

sudo fidsk -l

sudo fdisk -l                                                                                 
[sudo] senha para sidserra:      
Disco /dev/sda: 465,76 GiB, 500107862016 bytes, 976773168 setores
Modelo de disco: ST500LM012 HN-M5
Unidades: setor de 1 * 512 = 512 bytes
Tamanho de setor (lógico/físico): 512 bytes / 4096 bytes
Tamanho E/S (mínimo/ótimo): 4096 bytes / 4096 bytes
Tipo de rótulo do disco: dos
Identificador do disco: 0xf149afa4

Dispositivo Inicializar Início       Fim   Setores Tamanho Id Tipo

/dev/sda1   *             2048 976773119 976771072  465,8G 83 Linux


    Veja que o disco acima só tem uma partição (/dev/sda1) inteira para o sistema e para a pasta do usuário. 

sudo mount /dev/sdXY /mnt
sudo mount /dev/sdXZ /mnt/boot
        # somente se existir /boot separada

    Vamos ver como ficaria no disco mostrado mais acima:

 sudo mount /dev/sda1    # só tem um disco e uma partição e é MBR


    Veja que "sdXY" e "sdXZ" são, respectivamente, a PARTIÇÃO do sistema (/) e de boot MAS só se ela (a de boot) existir de forma separada.

sudo mount --bind /dev  /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys  /mnt/sys
sudo chroot /mnt
grub-install --target=i386-pc /dev/sdX    
# mude /dev/sdX para /dev/sda, /dev/sdb de acordo com o comando fdisk

    Atenção que /dev/sdX é o DISCO onde o sistema está instalado e não a partição. Essa última linha no nosso disco de teste ficaria então:

grub-install --target=i386-pc /dev/sda

update-grub
exit
sudo umount -R /mnt
sudo reboot

    Veja se o boot da mesma voltou - provavelmente sim. Agora vamos ver para sistemas GPT/UEFI. As recomendações de sda, sdb, sda1 e tal seguem a mesma lógica.

sudo mount /dev/sdXY /mnt
sudo mount /dev/sdXZ /mnt/boot       
# somente se existir /boot separada
sudo mount /dev/sdXW /mnt/boot/efi   
# partição EFI (FAT32)
sudo mount --bind /dev  /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys  /mnt/sys

sudo chroot /mnt

grub-install \
  --target=x86_64-efi \
  --efi-directory=/boot/efi \
  --bootloader-id=Debian

update-grub

exit
sudo umount -R /mnt
sudo reboot

     Reinicie a máquina e provavelmente o boot da mesma será restaurado. Pode ocorrer de você ter dois sistemas instalados no mesmo disco e o modo mais fácil é instalar o os-prober e depois rodar o comando:

apt install os-prober
update-grub

    Nesse caso NÃO É para usar exit, sudo umount -R /mnt e reboot pois o disco de sistema precisa estar instalado e montado já que esse pacote vai ser instalado no sistema que se quer recuperar. O OS-Prober normalmente vem desabilitado, então vamos habilitá-lo - novamente o sistema afetado tem que estar montado:

sudo nano /etc/default/grub
GRUB_DISABLE_OS_PROBER=false
    # se a linha estiver true, mude para false

Salve com CTRL + O e feche com CTRL + X e depois:

sudo update-grub

E agora sim:

exit
sudo umount -R /mnt
sudo reboot

 

 Seu sistema estará de volta com outros eventuais que você tenha na máquina.

Nenhum comentário:

Postar um comentário