Recuperándose de 'grub rescue>' crash [cerrado]

25

Publicado originalmente en AskUbuntu.com ...

AskUbuntu ha adoptado una política de cierre de preguntas sobre las versiones EOL (End Of Life). También hay un contingente vocal para eliminarlos. Para evitar la posible pérdida de esta pregunta popular (342335 visitas hasta la fecha), estoy colocando una versión revisada aquí. --- docsalvager

El sistema "clásico" ...

  • Puppy Linux 5.2.8 (Lucid) basado en Ubuntu 10.04 (Lucid Lynx)
  • Cargador de arranque GRUB 2

GRUB 2 pone una cantidad de *.modarchivos (módulos del núcleo) en /boot/grub. La eliminación de estos archivos (pensando que eran archivos de sonido mal ubicados) resultó en una falla al reiniciar y la solicitud grub rescue>.

¿Cómo recuperarse en esta situación?

DocSalvager
fuente
1
Parece una pregunta tonta ... obviamente, usted restaura los archivos eliminados de la copia de seguridad o reinstala grub (y ya hay muchas preguntas sobre cómo hacerlo)
psusi
Las estadísticas absolutas de visualización en el pasado son tan relevantes como las del periódico de ayer.
Anthon
Los periódicos del pasado han resuelto innumerables crímenes y han sido responsables de una gran cantidad de resolución de problemas que hicieron del mundo un lugar mejor.
DocSalvager
Me parece que arrancar en modo de rescate desde el DVD y reinstalar grub desde allí probablemente sería ideal. Probablemente sea mucho más sencillo para la mayoría de las personas, ya que la pérdida de datos mencionada debe restringirse a los archivos del paquete.
Bratchley
No quiere decir que no creo que extraer los archivos específicos del initrd no sea inteligente. Solo creo que es probable que confunda a las personas, ya que es para ayudar. Arrancar en modo rescate / recuperación es un procedimiento más común.
Bratchley

Respuestas:

43

Esta respuesta es para otros que la respuesta de DocSalvager no funciona.

  1. Seguí el uso de DocSalvager lspara encontrar la partición correcta del disco duro. En mi caso lo fue (hd0,msdos5).
  2. Luego ejecuté los siguientes comandos para volver a la pantalla normal del cargador de arranque de grub.

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. Después de arrancar en Ubuntu reparé el cargador de arranque grub con los siguientes comandos desde la terminal.

    sudo grub-install /dev/sda 
    

Consulte esta fuente para ver un recorrido visual de este proceso.

Gibado
fuente
66
Me alegra que
hayan
2
Perfecto, ¡exactamente la ayuda que necesitaba para arrancar! También corrí sudo update-grubantes grub-install, porque mi diseño de partición había cambiado.
mwfearnley
¿Cuánto tarda el insmod normalcomando? Después de presionar Enter, mi ubuntu se cuelga. Sin embargo, está 'corriendo' como una VM en Oracle VirtualBox.
Snark
1
Actualización: finalmente regresó con, error: failure reading sector 0x8019a4 from 'hd0'así que supongo que es bastante terminal.
Snark
respuesta legendaria!
zack
28

Recuperándose de un accidente de rescate de larvas ...

  • grub rescue>no admite cd, cpni ningún otro comando del sistema de archivos, excepto su propia variación, lsque es realmente un tipo de findcomando.
  • Primero, tuve que encontrar la partición con el /bootdirectorio que contenía el vmlinuzy otros archivos de imagen de arranque ...

    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 sin argumentos devuelve las cuatro particiones en este sistema.
    • ls (hd0,4)/bootno encuentra un /bootdirectorio en la partición (hd0,4).
    • ls (hd0,3)/bootno encuentra un /bootdirectorio en la partición (hd0,3).
    • ls (hd0,2)/bootencuentra un /bootdirectorio en la partición (hd0,2)y contiene uno vmlinuzy otros archivos de imagen de arranque que queremos.
  • Para iniciar manualmente desde el grub rescue>indicador ...

    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  
    
    • Establecer rootpara usar el /bootdirectorio en la partición (hd0,2).
    • Módulo de carga grub linux.
    • Configure ese módulo para usar la imagen del núcleo vmlinuz-2.6.32-33-generic.
    • Configure initrd (disco RAM de inicio) para usar la imagen initrd.img-2.6.32-33-generic.
    • Arranque Linux.
  • Esto arranca con un indicador de línea de comandos de BusyBox que tiene todos los comandos básicos del sistema de archivos (¡ y algunos más! ).

  • Luego podría mover los *.modarchivos nuevamente al /boot/grubdirectorio ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Reinicio exitoso!

Ver también ...

DocSalvager
fuente
No puedo encontrar ninguna carpeta de arranque en el nivel raíz en BusyBox
souparno majumder
1
Las imágenes de arranque de vmlinuz, ... que está buscando, podrían estar en el sistema de archivos raíz de nivel superior, así que intente usar solo una barra oblicua. Eso también mostrará directorios de nivel superior. Si las imágenes de arranque no están en la raíz de nivel superior, puede comenzar a probar los directorios más prometedores hasta que los encuentre. Por ejemplo: ls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/, etc ..
DocSalvager
En mi caso, después de correr ls (hd0,7)/boot, se nota attempt to read or write outside of disk 'hd0'.
Margarita
Hay menos de 7 particiones en la unidad hd0. También puede ser que haya espacio sin asignar en la unidad que no sea parte de ninguna partición.
DocSalvager
1
¡Tenía que establecer el prefijo / boot / grub antes de poder ejecutar insmod linux!
Emil