Como usar o GRUB Rescue para corrigir o Linux
Publicados: 2023-05-14ls
, 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.
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 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.
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
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
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)
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)/
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
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
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
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
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
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