Como usar o GRUB Rescue para corrigir o Linux

Publicados: 2023-05-14
Tela de inicialização do Ubuntu Linux em um laptop
Jordan Gloor / How-To Geek
Se seus shells GRUB mostrarem um prompt "grub>", você poderá usar os comandos ls , set , linux e initrd para corrigir seu sistema Linux. Se, em vez disso, você vir um prompt "grub rescue>", use os comandos set , insmod , linux e initrd para inicializar seu PC.

Se o seu computador Linux não conseguir inicializar em seu sistema operacional, é provável que você se depare com um prompt no shell do GRUB. Siga estas etapas para reparar seus processos de inicialização interrompidos.

Índice

Quando seu bootloader não inicializa
Usando o Shell GRUB
Usando o GRUB Rescue Shell
Outras soluções possíveis

Quando seu bootloader não inicializa

Existem muito poucos problemas de computador que fazem seu coração afundar tão profunda e rapidamente quanto uma falha na inicialização. Sem um sistema operacional funcionando, seu computador não é realmente um computador.

Pode ser um problema muito opaco, sem uma maneira fácil de detalhar a causa raiz. Sem acesso ao Linux, você não pode usar nenhuma das ferramentas e processos de diagnóstico usuais que usaria para investigar o problema. E sem determinar qual é o problema, como você pode corrigi-lo?

No Linux, GRUB é o software que controla o processo de inicialização. Se você tiver vários sistemas operacionais instalados, ele permite que você escolha aquele em que deseja inicializar.

GRUB é controlado por sua configuração. Ele também depende de outros arquivos de suporte para executar suas funções. Se algum deles estiver ausente ou corrompido, o GRUB não funcionará. Alterações nos discos rígidos e partições do seu computador precisam ser refletidas na configuração do GRUB. Se não for esse o caso, as instruções do GRUB não farão sentido e seu processo de inicialização não funcionará.

Como gravar um arquivo ISO em uma unidade USB no Linux
RELACIONADO Como gravar um arquivo ISO em uma unidade USB no Linux

Como observação, o que todos chamamos de GRUB é na verdade GRUB 2. Esta é uma versão avançada do GRUB lançada em 2012. Entre outras alterações, mudou a maneira como o arquivo “grub.cfg” foi criado e permite que você inicialize a partir de mídia removível.

Se o GRUB não puder carregar um sistema operacional, você ficará olhando para um prompt no shell do GRUB. Este é um ambiente minimalista que permitirá que você execute um punhado de ações. Feito corretamente, no entanto, essas etapas podem ressuscitar seu computador.

Existem dois shells GRUB diferentes. Dependendo da causa raiz do problema, você pode se deparar com um prompt de shell do GRUB:

 grub>

ou em um prompt de shell de resgate do GRUB:

 grub resgate>

O shell de resgate do GRUB é ainda mais restrito do que o shell do GRUB, mas ainda tem força suficiente para inicializar o computador. Uma vez que seu computador inicializou, você estará em uma posição muito melhor para curar a causa raiz.

Usando o Shell GRUB

O shell GRUB é uma interface de linha de comando que permite usar um pequeno subconjunto de comandos do Linux. Se você se encontrar aqui em vez de na tela de login normal, isso significa que seu processo de inicialização está confuso.

O prompt do shell GRUB

Os comandos aos quais você tem acesso não são os mesmos das versões usuais do Linux. Por exemplo, o comando GRUB shell ls não é o comando Bash ls . Tem muito pouco em comum com ele. Podemos ver isso usando a opção --help .

 ls --help 

Usando a opção --help com a versão shell GRUB de ls

Ele lista apenas cinco opções. Isso está muito longe das dezenas de opções suportadas por ls no Bash. No entanto, mesmo com nossa paleta de comandos um tanto silenciosa, ainda podemos corrigir a situação.

No prompt, digite ls e pressione "Enter".

 ls 

A saída da versão do shell GRUB de ls, mostrando unidades e partições

Neste computador, ele lista três itens.

  • (hd0) é o primeiro disco rígido.
  • (hd0,gpt1) é a primeira partição no primeiro disco rígido.
  • (hd0,gpt2) é a segunda partição no primeiro disco rígido.

O rótulo “gpt” significa tabela de partição GUID. Precisamos incluir os colchetes “ () ” quando referenciamos uma partição, mas podemos omitir o rótulo.

Para examinar as partições, usaremos ls .

 ls (hd0,1)
 ls (hd0,2) 

Usando a versão shell GRUB de ls para identificar a partição Linux

Descobrimos que a segunda partição possui um sistema de arquivos Linux nela. Investigaremos um pouco mais examinando o diretório raiz dessa partição.

 ls (hd0,2)/ 

Usando a versão do shell GRUB de ls para examinar uma partição específica

Claramente, esta é a partição do Linux, com o diretório de inicialização nela. É aqui que os arquivos GRUB, as imagens de inicialização do Linux e outros arquivos de inicialização são armazenados.

Neste computador, precisaremos referenciar a partição (hd0,2) quando emitirmos nossos comandos. Em seu computador, você usaria qualquer partição em que encontrasse a instalação do Linux.

Podemos usar o comando cat para procurar arquivos de texto anexando o caminho do diretório e o nome do arquivo ao nome da partição, assim:

 gato (hd0,2)/etc/problema 

Olhando para a versão do Linux usando o comando cat no shell GRUB

Em instalações de inicialização múltipla, essa é uma maneira útil de verificar se você está na partição correta. Também é ótimo para procurar dentro dos arquivos de configuração.

Aqui, estamos usando o comando ls com as opções -l (longo) e -h (tamanhos legíveis por humanos) para listar os arquivos no diretório “/boot”.

 ls -lh (hd0,2)/boot 

Listando os arquivos no diretório /boot usando a versão GURB de ls

Para fazer esse computador inicializar, precisamos informar ao GRUB que nossa recém-descoberta partição Linux contém os arquivos de inicialização.

 definir raiz = (hd0,2)

Precisamos especificar de qual kernel do Linux inicializar. Fazemos isso com o comando linux . Observe que também temos que fornecer o diretório raiz usando o disco rígido usual do Linux e o esquema de nomenclatura da partição.

 linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2

Em nosso computador de exemplo, estamos usando (hd0) , que é o primeiro disco rígido. Isso é chamado de sda ​​na nomenclatura usual do Linux. Descobrimos que a segunda partição é a partição Linux, então precisamos especificar sda2 .

Sua máquina pode ser diferente. Por exemplo, se sua partição Linux for relatada como (hd2,1) , isso significa a partição um no terceiro disco rígido ou sdc1 .

Também precisamos especificar qual imagem do sistema de arquivos baseado em RAM usar quando o computador for inicializado. Isso deve usar o mesmo componente numérico do kernel do Linux que estamos usando.

 initrd /boot/initrd.img-6.2.0-20-generic 

Definindo os parâmetros de inicialização no shell GRUB

Agora, para inicializar nosso sistema, digite “boot” e pressione “Enter”.

Isso deve inicializar seu computador no Linux. Isso nos colocou em execução novamente, mas ainda precisamos corrigir o GRUB para não precisarmos fazer isso toda vez que iniciarmos nosso computador.

Vamos executar update-grub . Isso fará a varredura de nosso sistema, identificará os sistemas operacionais e criará uma nova configuração do GRUB. Precisamos executar isso como o usuário root.

 sudo update-grub 

Executando update-grub para reconstruir o arquivo grub.cfg

Raramente, pode ser necessário reinstalar o gerenciador de inicialização GRUB também, usando grub-install .

 sudo grub-install /dev/sda

Observe que você não precisa especificar em qual partição instalar, apenas em qual unidade. Em instalações normais, é a mesma unidade em que seu Linux está.

A prova do pudim vem com a próxima reinicialização. Seu computador deve reiniciar normalmente.

RELACIONADO: Como definir as configurações do carregador de inicialização GRUB2

Usando o GRUB Rescue Shell

Dependendo da natureza do problema de inicialização, você pode não cair no shell GRUB. Você pode ser deixado no modo de resgate do GRUB. Se for esse o caso, seu prompt ficará assim:

 grub resgate>

Os comandos que precisamos emitir neste shell são diferentes. Precisamos usar ls para encontrar a partição do Linux, como se você estivesse usando o shell GRUB. Tendo identificado a partição do Linux, você pode prosseguir e inserir esses comandos.

Lembre-se de usar os identificadores de unidade e os números de versão do kernel corretos para o seu computador. O comando insmod carrega os módulos do kernel.

 definir prefixo=(hd0,2)/boot/grub
 definir raiz = (hd0,2)
 insmod normal
 insmod linux
 linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2
 initrd /boot/initrd.img-6.2.0-20-generic 

Definindo os parâmetros de inicialização no shell de resgate do GRUB

Você pode digitar “boot” e pressionar “Enter” para reiniciar o computador. Assim que ele for reiniciado e você estiver conectado, atualize o GRUB com o comando update-grub .

Outras soluções possíveis

Se o problema for falta de arquivos de inicialização, como os arquivos “vmlinuz” e “initrd.img”, você pode inicializar seu computador a partir de um Live DVD ou unidade flash USB inicializável do Linux e copiar os arquivos ausentes no lugar.

Observe que os arquivos “vmlinuz” e “initrd.img” devem ter os mesmos números de versão, pois funcionam como um par correspondente.

RELACIONADO: Como criar um Linux Live USB inicializável no seu Mac