Grub Rescue [RESOLVIDO]

Aprenda a corrigir o erro de grub rescue e também como usar o grub para manipular e recuperar o boot de um disco com Windows corrompido!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

Conforme já ensinamos aqui no site, o GRUB é uma das etapas fundamentais para o devido boot de qualquer sistema, principalmente o Linux e qualquer uma de suas distribuições.

Normalmente uma distro Linux sobrevive a diversos problemas e se recupera, mas há casos onde o GRUB pode corromper.

O problema reside quando surge uma tela inoportuna popularmente conhecida como grub rescure, onde o grub não identificou os discos/sistemas instalados e simplesmente parou ali o processo de boot, deixando-o somente com uma tela de prompt limitada chamada de grub rescue:

Fixing Ubuntu - Filesystem unknown. Entering Rescue mode. grub rescue -  YouTube

2. Opções de Correção

A seguir, as opções que você tem à mão corrigir e/ou contornar o erro grub rescue!

2.1 Grub Rescue

Dentro da própria famosa tela de prompt do error você pode fazer alguns comandos para corrigir imediatamente, antes de precisar partir para o LiveUSB propriamente dito.

GRUB RESCUE > echo $root

GRUB RESCUE > echo $prefix

Verifique se ambos estão diferentes, com certeza você tem um problema. O prefixo e o root costumam ser o mesmo disco e partição. Vamos corrigir:

Encontre o disco do seu sistema com:

GRUB RESCUE > ls

Veja que terá várias entradas, como por exemplo:
(hd0) (hd0,msdos0) (hd0,msdos1) (hd1) (hd1,msdos0) (hd1,msdos1)

A lógica é bastante simples, HD0 ou HD1 são os discos; enquanto msdos0 ou msdos1 são as partições na ordem em que estão nos discos. Se for UEFI, será GPT0 ou GPT1.

2.1.1 Configurando

Uma vez que com LS você encontrar a partição do sistema – nela o GRUB vai exibir todas as pastas normalmente encontradas na raiz, como proc, sys, boot, etc. – você faz os seguintes comandos, adaptando nas sessões em negrito os dados que encontrou:

GRUB RESCUE > set root=(hd1,msdos1)

GRUB RESCUE > set prefix=(hd1,msdos1)/boot/grub

GRUB RESCUE > insmod normal

GRUB RESCUE > normal

Ok, tudo pronto, reinicie seu sistema com CTRL ALT DEL!

A partir daqui é pro seu sistema já estar normalizado e bootar normalmente.

2.1.2 Problemas…

Numa rara situação, pode ser que você, após o reinicio, veja uma tela de GRUB mais simples em vez do GRUB RESCUE. Uma tela mais “comum”, do Minimal GRUB. Significa que você recuperou o sistema parcialmente, porém ainda faltou algo, o kernel e o initrd não foram localizados, você precisa aponta-los manualmente!

Nesse caso, vamos dar boot manualmente no Linux na “unha” até ele levantar por completo!

Bom, primeiro digite na tela do grub rescue e vá dando Enter conforme abaixo:

GRUB > insmod linux

GRUB > linux /vmlinuz root=/dev/sdXY

GRUB > initrd /initrd.img

GRUB > boot

Onde está sdXY, você precisa colocar a letra da sua unidade padrão, normalmente SDA1, mas depende, verifique atentamente! Assim que der ENTER após “boot”, o sistema vai inicializar normalmente. Agora você vai precisar reinstalar e atualizar o GRUB.

$ sudo grub-install /dev/sdXY
$ sudo grub-install --recheck /dev/sdXY
$ sudo update-grub2

Agora sim, GRUB reinstalado e devidamente atualizado, o problema não deve ocorrer novamente.

2.2 “Chrooting

Essa é a opção mais “simples” pra quem tem um LiveUSB de seu sistema à mão para dar manutenção.

Primeiro confira onde está a partição do seu sistema:

$ sudo fdisk -l

Após localizar, monte-a com:

$ sudo mount -t ext4 /dev/sdXY /mnt

Mude em negrito o sistema de arquivos que está usando. Se for BTRFS, EXT3, XFS, etc.

Agora, instale novamente o GRUB nesse disco afetado com:

$ sudo grub-install --root-directory=/mnt /dev/sdX

Novamente, altere em negrito o caminho do disco que sofrerá a manutenção. É interessante atualizar o GRUB por via das duvidas:

$ sudo update-grub2

Após reiniciar, o sistema deve inicializar normalmente. Caso volte para a tela de GRUB > em vez de GRUB RESCUE >, volte ao passo 1.1 e faça a partir de 1.1.1.

2.3 COW

Quando estiver num LiveUSB, você pode se deparar com um fatídico erro do GRUB, que não deixa instalar no disco por haver problemas com o /COW montado.

Isso é uma base do sistema de arquivos que normalmente não se recomenda desmontar para não causar instabilidade no sistema.

Para contornar isso de uma forma não ortodoxa, rode os seguintes comandos:

$ sudo dd if=/dev/zero bs=1M count=1 of=cowfile
$ sudo mkfs -t vfat cowfile
$ sudo mv cowfile /cow

Assim o GRUB acha que a pasta /COW está apenas vazia e parará de dar o erro, permitindo fazer a instalação do GRUB no disco afetado. O método não afeta de forma alguma no sistema instalado!

2.4 Windows

Para casos excepcionais, pode acontecer de você ter problemas em bootar um Windows, seja por erros no dual boot, seja por problemas com uma partição Reservada pelo Sistema. Para casos assim o GRUB também pode ajudar!

  1. Primeiro entre em um LiveUSB. Lembre-se, se for UEFI/GPT, o sistema Linux deve inicializar como UEFI/GPT!

  2. Crie 2 pastas em /mnt:
    $ sudo mkdir /mnt/efi
    $ sudo mkdir /mnt/sistema

    Se for Legacy/MBR/BIOS, não precisa da pasta EFI.

  3. Monte as partições fundamentais do HD nessas pastas, onde /mnt/efi será a “reservada pelo sistema” e o /mnt/sistema onde fica o Windows. Não vamos montar/usar as partições Recovery nem Microsoft System.
  4. $ sudo mount /dev/sda2 /mnt/efi
    $ sudo mount /dev/sda4 /mnt/sistema
  5. Instale o GRUB nessas partições:
    $ sudo grub-install –target x86_64-efi –boot-directory=/mnt/sistema –efi-directory=/mnt/efi/efi /dev/sda
    Note que há um diretório EFI dentro de /mnt/efi!

  6. Se for Legacy, o comando fica assim:
    $ sudo grub-install  –target=i386-pc –boot-directory=/mnt/sistema /dev/sdaApós isso reinicie seu PC.

  7. Se tudo ocorreu dentro dos conformes, você terá, na tela de seleção de dispositivo de boot, uma opção “nome-da-distro” e outra “Windows Boot Manager”.

  8. Se entrar na Windows Boot Manager, ele vai dar erro. Se entrar na “nome-da-distro” ele vai pro GRUB. – NÃO pode ser GRUB RESCUE! Se aparecer GRUB RESCUE, reinstale e confira se os comandos estão de acordo com o seu layout de discos.

  9. Dê boot e vá até o GRUB.

Volte até o tópico anterior 2.1, quando começar no 2.1.1, volte aqui!

A sequência de comandos para boot em partição Windows é:

insmod ntfs
insmod part_gpt
insmod chain
set root=(hd0,gpt2)
chainloader /efi/Microsoft/Boot/bootmgfw.efi
boot

OBS:

  • Se for MBR/Legacy, não precisa da segunda linha part_gpt.
  • Se for MBR/Legacy, troque gpt2 por msdos2, conforme seu layout descoberto no tópico 1.1 anteriormente referenciado!

Após esses comandos, seu Windows deve inicializar normalmente!

2.5 “Compression Type 0x3 not supported”

Esse erro pode ocorrer se você habilitou a compressão ZSTD em um sistema Linux e aplicou, por consequencia, a compressão no /boot. O GRUB do Ubuntu 20.10 em diante já suporta ZSTD! Isso se aplica apenas a versões anteriores à 20.04.

A solução pra corrigir isso, é levantar um liveUSB, montar o disco problemático com permissões de leitura e escrita, e rodar os comandos abaixo, adaptando-o conforme suas necessidades:

  1. Comprimir novamente com ZLIB:
    $ sudo btrfs filesystem defrag -rc /mnt/disco…/boot
  2. Desabilitar a compressão para novos arquivos:
    # chattr -Rc /mnt/disco…/boot

Sendo /boot o caminho no disco que você viu o problema!
Monte-o em /mnt e faça o caminho completo.

Pode executar um “sudo update-grub2” para finalizar e reinicie a máquina.
Ela deve entrar normalmente.

3. Conclusão

O GRUB tem seus problemas, mas com certeza é um bom gerenciador de boot para Linux ou Windows, com diversas opções e ferramentas para as mais diversas finalidades e soluções de diversos problemas.

Por isso é até hoje o bootloader padrão da maioria das distros Linux!

#UrbanCompassPony

21 comentários em “Grub Rescue [RESOLVIDO]”

  1. Estava vendo no meu nootbook as partições do Linux foram todas excluídas tento fazer o boot mais e sistema no último código [insmod normal] da erro frustrante

    Responder
  2. Amigo, arruma essa linha aqui que está errada:

    > $ sudo grub-install –root-directory=/mnt /dev/sdXY

    É pra ser

    > $ sudo grub-install –root-directory=/mnt /dev/sdX

    Abraço!

    Responder
  3. certeza que salvou muita gente. esse é o espírito da comunidade linux. quem ficou insatisfeito precisa primeiro resolver a imaturidade para depois embarcar no maravilhoso mundo do pinguim

    Responder
  4. Obrigado deu certo, estou entrando no mundo Debian, e o grub tinha ido para o espaço, a explicação me ajudou muito, o sistema abriu perfeito. Precisa de paciência mas agradeço muito valeu

    Responder
  5. Deu certo aqui, infelizmente meu HD tá em warning a séculos. Kkkk Tô aguardando o novo. Rezando pra conseguir pelo menos ligar o PC pra poder instalar o windows no HD novo e recomeçar a vida. Obrigada! Li vários tutoriais mas o único que me tirou da tela do Grub rescue foi esse.

    Responder
    • Verifica com a ajuda de um liveUSB de outro sistema se de fato a pasta ou partição /boot/grub existe e se não está corrompida. Dependendo do caso vale a pena reinstalar o GRUB. Se tiver muito dificil consertar, ainda vale a máxima premissa de formatar.

      Responder
  6. gostari de saber se eata linha esta correta ou se falta algo estou com este b.o e nao consigo instalar o ubuntu
    chainloader /efi/Microsoft/Boot/bootmgfw.efi

    Responder
  7. Você poderia me ajudar? Já tentei de tudo quanto e solução e nada.
    Eu estava instalando um sistema parecido com Phoenix os, porém fiz de uma forma errada , eu acabei instalando o darkmatter executando o arquivo de programa dele, daí ele reiniciou meu Pc e foi pra o terminal do grub rescue, e até agora eu não consigo inicializar o windows normal, já tentei de tudo , mechi na bios e tudo, Já tentei todos comandos possíveis no terminal Grub rescue, Mas nada reiniciar meu Pc normalmente, Quando coloco até os comando insmod, diz que ” you need to load kernel first. Meu Pc é windows 7.

    Responder

Deixe um comentário