Recuperando arquivos .mod movidos usando o grubrescue


33

Eu fiz uma coisa idiota ... Esqueci que o Ubuntu 10.04 (Lucid Lynx) mudou para o GRUB  2, que coloca uma tonelada de arquivos * .mod (módulos do kernel) /boot/grub. Eu pensei que eram arquivos de trilha sonora colocados lá erroneamente e os mudei. Escusado será dizer que a próxima reinicialização foi traumática. Fui presenteado com algo que eu não tinha lembrança de ter visto ... um prompt de 'grub rescue>'.

Com a ajuda do erro Fixing GRUB: "error: unknown filesystem" , no entanto, eu consegui recuperar ...

  • Descobri que o resgate do GRUB não possui 'cd', 'cp' ou qualquer outro comando do sistema de arquivos, exceto sua própria variação de 'ls'.
  • Então, primeiro eu tive que encontrar a partição com o /bootdiretório que contém o vmlinuzarquivo e outros arquivos de imagem de inicialização ... (aproximação da memória de tentativas com falha, além de linhas em branco para maior clareza, adicionada em 10/07/2014 por docsalvage)

    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 
    
  • Encontrei um /bootdiretório que contém o vmlinuzarquivo vmlinuz-2.6.32-33-genericna partição (hd0,2).

  • Então eu inicializei manualmente a partir do prompt 'grub rescue>'. Os seguintes comandos irão ...

    • Defina rootpara usar o /bootdiretório na partição (hd0,2).
    • Carregue o módulo do kernel linux.
    • Defina esse módulo para usar a imagem do kernel vmlinuz-2.6.32-33-generic.
    • Defina initrd (inicialize o disco RAM) para usar a imagem initrd.img-2.6.32-33-generic.
    • Inicialize o Linux.
  • grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
  • Isso inicializa e trava no prompt do BusyBox, que possui alguns comandos rudimentares do sistema de arquivos.

  • Então mudei os arquivos * .mod de volta para o /boot/grubdiretório ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • A reinicialização foi bem-sucedida, mas isso deu muito trabalho.

Existe uma maneira mais fácil?


1
Boot-Repair seria muito mais fácil, na minha opinião. Confira uma das minhas múltiplas respostas no Boot-Repair para obter detalhes sobre como usá-lo.
11133 SirCharlo

1
A maneira "mais fácil" nem sempre é a melhor. Discordo totalmente de todos os comentários que sugerem o uso de um Live CD; é realmente muito difícil inicializar a partir de um Live CD em sistemas que não possuem um leitor de CD / DVD.
Simón

Não é possível localizar a partição com o diretório / boot. Todas as partições após o comando ls fornecem uma saída desconhecida do sistema de arquivos.
Rafed Nole

1
Sua postagem foi muito útil para inicializar manualmente o kernel e o initrd, mas meu sistema não conseguiu encontrar dev, sys ou proc, etc / fstab ou sbin / init. Isso me levou a outro post , que sugeriu carregar o kernel e definir a raiz conforme detalhado nas instruções de inicialização manual na documentação do grub , por exemplo: grub> linux (hd0,X)/boot/vmlinuz-a.b.c-d-generic root=/dev/sdaX onde Xestá a partição /boot, a.b.c-dé a versão do kernel. Então meu sistema inicializou bem! Obrigado!
Mark Mikofski

1
além de [Corrigindo o erro do GRUB: “erro: sistema de arquivos desconhecido” [duplicado]] ( askubuntu.com/q/142300/36961 ) outro ótimo link que cobre essas etapas é Como resgatar um GRUB 2 que não inicializa no Linux , o manual do grub 2 também é muito útil
Mark Mikofski

Respostas:


5

Não. Acho que você encontrou a maneira mais fácil de se recuperar do estado do seu sistema usando o grub rescue ; é um sistema muito minimalista, com capacidade suficiente para inicializar o sistema.

BTW, acredito que você deve ter encontrado os .modarquivos e executado insmod linuxou o linuxcomando teria falhado.

A única outra maneira, como mencionado, seria inicializar um Live CD e reinstalar o grub2 depois de fazer o chroot no sistema 'quebrado'.


Você está absolutamente correto! Eu esqueci que tinha feito isso. Adicionado ao meu post original acima para referência futura. Eu preciso ser mais disciplinado em manter anotações cuidadosas nessas situações. Por favor, informe se são necessárias mais edições.
DocSalvager

Eu também tive que especificar raiz ao carregar o kernel como no grub docs por exemplo grub> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
Mark Mikofski

Observe também que, se você encontrou os arquivos .mod, pode restaurar o "grub rescue" para o GRUB com todos os recursos: # Inspect the current prefix (and other preset variables): set # Find out which devices are available: ls # Set to the correct value, which might be something like this: set prefix=(hd0,1)/grub set root=(hd0,1) insmod normal normal Fonte: gnu.org/software/grub/manual/html_node/…
MegaBrutal

7

Aqui estão algumas instruções gerais e básicas para ajudar com erros de inicialização, como GRUB loading stage 1.5 error 15 (por exemplo, após a instalação do Windows em uma unidade de disco diferente):

  1. Inicialize com um LiveDVD (por exemplo, o disco do Ubuntu Desktop).

  2. Abra um terminal e reescreva a configuração do grub usando estes comandos:

    • sudo mount /dev/sdXY /mnt
    • sudo grub-install --root-directory=/mnt /dev/sdX

Onde /dev/sdXestá o disco em que o Ubuntu está instalado e /dev/sdXYa partição no disco em que o Ubuntu está instalado. Em outras palavras, /dev/sdXYcontém /boote assim por diante.

Use fdisk -lpara verificar o local da instalação do Ubuntu.


Não funcionou. Talvez se as instruções fossem mais específicas, teria funcionado.
Tim Stewart

Quando tive um problema do grub2 em uma máquina sem unidade de CD, consegui me recuperar usando minha unidade de memória USB Gparted Live. Eu iniciei no Gparted live. ENTÃO, iniciei um terminal e digitei fdisk -l (é a letra ell, não o número 1). A saída disso permitiu identificar a partição que continha a partição raiz e, a partir daí, segui as excelentes instruções acima e logo iniciei a inicialização dupla novamente. .
Vic

4
  1. Inicialize no Live CD

  2. Terminal aberto (CTRL + ALT + T)

  3. Digite os seguintes comandos:

sudo fdisk -l

E encontre sua partição Ubuntu (deve ser / dev / sda1 se for a primeira partição)

sudo mount /dev/sda1 /mnt

sudo mount --bind /sys /mnt/sys

sudo mount --bind /proc /mnt/proc

sudo mount --bind /dev /mnt/dev

sudo chroot /mnt

Agora reinstale o Grub2

sudo apt-get install --reinstall grub2

2
Esta é uma maneira melhor do que sudo mount /dev/sda1 /mnte sudo grub-install --root-directory=/mnt/ /dev/sda && sudo update-grub?

4

Eu tive o mesmo problema ao atualizar meu sistema.

Sugiro os seguintes passos simples:

  1. Inicialize seu sistema com o live CD do ubuntu ou o USB ao vivo.
  2. Abra o terminal e execute o comando sudo add-apt-repository ppa: yannubuntu / boot-repair && sudo apt-get update
  3. Em seguida, instale o reparo de inicialização executando o comando sudo apt-get install -y boot-repair && boot-repair

  4. Inicie o reparo de inicialização após a instalação. Por exemplo, no menu, use System->Administration->Boot-Repair (apenas Ubuntu 10.04) e siga as instruções.

    Pode levar de 15 a 20 minutos para descobrir o problema e corrigi-lo.

Para obter mais ajuda, acesse o link https://help.ubuntu.com/community/Boot-Repair


0

Você pode inicializar o CD ao vivo, montar o disco rígido, abrir o nautilus como root e copiar esses arquivos para / boot.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.