Recuperando-se do travamento do 'grub rescue>' [fechado]

25

Originalmente publicado em AskUbuntu.com ...

O AskUbuntu adotou uma política de fechar perguntas sobre as versões EOL (End Of Life). Há um contingente vocal para removê-los também. Para evitar uma possível perda dessa pergunta popular (342335 visualizações até o momento), estou colocando uma versão revisada aqui. --- docsalvager

O sistema "clássico" ...

  • Puppy Linux 5.2.8 (Lucid) baseado no Ubuntu 10.04 (Lucid Lynx)
  • Carregador de inicialização GRUB 2

O GRUB 2 coloca vários *.modarquivos (módulos do kernel) no /boot/grub. A exclusão desses arquivos (pensando que eram arquivos de som extraviados) resultou em falha na reinicialização e no prompt grub rescue>.

Como se recuperar nessa situação?

DocSalvager
fonte
11
Parece ser uma pergunta idiota .. obviamente, você quer restaurar os arquivos apagados de backup ou grub reinstalação (e há uma abundância de perguntas sobre como fazer isso já)
psusi
As estatísticas absolutas de visualização do passado são tão relevantes quanto as do jornal de ontem.
Anthon
Os jornais do passado resolveram incontáveis ​​crimes e foram responsáveis ​​por uma grande quantidade de solução de problemas que fez do mundo um lugar melhor.
DocSalvager
Parece-me que a inicialização no modo de recuperação do DVD e a reinstalação do grub a partir daí provavelmente seria o ideal. Provavelmente é muito mais direto para a maioria das pessoas, pois a perda de dados mencionada deve ser restrita aos arquivos no pacote.
Bratchley
Para não dizer que não acho que pescar os arquivos específicos do initrd não seja inteligente. Eu acho que é provável que confunda as pessoas, pois é para ajudar. A inicialização no modo de recuperação / recuperação é um procedimento mais comum.
Bratchley

Respostas:

43

Esta resposta é para outras pessoas por aí que a resposta do DocSalvager não funciona.

  1. Eu segui o uso do DocSalvager lspara encontrar a partição correta do disco rígido. No meu caso, foi (hd0,msdos5).
  2. Em seguida, executei os seguintes comandos para voltar à tela normal do carregador de inicialização grub.

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. Após inicializar no Ubuntu, reparei o carregador de inicialização grub com os seguintes comandos do terminal.

    sudo grub-install /dev/sda 
    

Consulte esta fonte para uma visão visual deste processo.

Gibado
fonte
6
Estou feliz que vocês publicados antes deste foi fechada
smac89
2
Perfeito - exatamente a ajuda que eu precisava para inicializar! Também corri sudo update-grubantes grub-install, porque meu layout de partição havia mudado.
Mkfearnley
Quanto tempo leva o insmod normalcomando? Depois de pressionar Enter, meu ubuntu trava. É certo que ele está "executando" como uma VM no Oracle VirtualBox.
snark
11
Atualização: Voltou eventualmente com, error: failure reading sector 0x8019a4 from 'hd0'então eu acho que é bastante terminal!
snark
resposta lendária!
Zack
28

Recuperando de um acidente de resgate grub ...

  • grub rescue>não suporta cd, cpou quaisquer outros comandos do sistema de arquivos, exceto sua própria variação, lsque é realmente um tipo de findcomando.
  • Então, primeiro, tive que encontrar a partição com o /bootdiretório que contém os vmlinuzarquivos de imagem de inicialização e outros ...

    grub rescue>  ls  
    (hd0,4) (hd0,3) (hd0,2) (hd0,1)  
    
    grub rescue>  ls (hd0,4)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,3)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,2)/boot
    ... grub ... initrd.img-2.6.32-33-generic ... vmlinuz-2.6.32-33-generic 
    
    • ls sem argumentos retorna as quatro partições neste sistema.
    • ls (hd0,4)/bootnão encontra um /bootdiretório na partição (hd0,4).
    • ls (hd0,3)/bootnão encontra um /bootdiretório na partição (hd0,3).
    • ls (hd0,2)/bootlocaliza um /bootdiretório na partição (hd0,2)e contém um vmlinuze outros arquivos de imagem de inicialização que queremos.
  • Para inicializar manualmente a partir do grub rescue>prompt ...

    grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic  
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
    • Defina rootpara usar o /bootdiretório na partição (hd0,2).
    • Carregue o módulo grub linux.
    • Defina esse módulo para usar a imagem do kernel vmlinuz-2.6.32-33-generic.
    • Defina initrd (disco RAM init) para usar a imagem initrd.img-2.6.32-33-generic.
    • Inicialize o Linux.
  • Isso é inicializado em um prompt da linha de comando do BusyBox, que possui todos os comandos básicos do sistema de arquivos ( e mais alguns! ).

  • Em seguida, poderia mover os *.modarquivos de volta para o /boot/grubdiretório ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Reinicialização bem-sucedida!

Veja também ...

DocSalvager
fonte
Não consigo encontrar qualquer pasta de inicialização no nível de raiz no BusyBox
souparno Majumder
11
As imagens de inicialização vmlinuz, ... que você está procurando, podem estar no sistema de arquivos raiz de nível superior, então tente usar apenas uma barra. Isso também mostrará diretórios de nível superior. Se as imagens de inicialização não estiverem na raiz de nível superior, você poderá começar a tentar os diretórios mais promissores até encontrá-los. Por exemplo: ls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/, etc ..
DocSalvager
No meu caso, depois de executar ls (hd0,7)/boot, mostra attempt to read or write outside of disk 'hd0'.
Daisy
Existem menos de 7 partições na unidade hd0. Também pode ser que haja algum espaço não alocado na unidade que não faça parte de nenhuma partição.
DocSalvager
11
Eu tive que definir o prefixo para / boot / grub antes de poder executar o insmod linux!
Emil