Recuperar grub

Recientemente tuve que recuperar Grub2 de uno de los equipos que manejo. Es un ordenador con arranque dual Windows 7 y Debian que tenía tan solo 60 GB para Windows y en cuanto quieres hacer algo se queda corto.

La solución fue entrar con un USB como si fuéramos a reinstalar Debian y redimensionar la partición con Debian. Todo fue rápido y en apariencia sin problemas, pero al reiniciar salió el menú de grub, el gestor de arranque:

grub rescue>

Esto significa que grub ha perdido la partición desde la que debe arrancar, porque da error o porque no exista.

Una opción para recuperarlo sería ir con una distro Linux desde la que arrancar on un sistema operativo completo, una LiveCD. Es fácil, pero tienes que tener una distro a mano en un USB.

Sin embargo, por la consola de rescate de grub también podemos hacerlo.

Primero, tenemos que descubrir en qué partición está. Para ello, tenemos que ejecutar ls y ver cuántas particiones hay:

grub rescue> ls

Lo que saldrá algo parecido a esto:

(hd0) (hd0,1) (hd1) (hd1,1) (hd1,5) (hd2) (hd2,1) (hd3) (hd3,1)

Cada hd implica un hard disk, un disco duro, y a partir de ahí se crean particiones /dev/sd.

Siguiendo el caso anterior:

  • hd0,1 es /dev/sda1
  • hd1,1 es /dev/sdb1
  • hd2,1 es /dev/sdc1
  • etc…

Hay que probar a listar cada partición a ver cuál tiene boot:

ls (hd1,1)/

Una vez que lo hemos identificado, añadimos el prefijo:

set prefix=(hd1,1)/boot/grub

Ahora ampliamos los comandos disponibles con insmod:

insmod (hd1,1)/boot/grub/linux.mod

Aunque a mí este ejemplo me dio error y me funcionó simplemente insmod linux

Ahora seleccionamos la partición:

set root=(hd1,1)

Y cargamos la imagen que queramos:

iunux /boot/vmlinuz-3.2.0-38-generic root=/dev/sdb1

¡Y listo!

Siguiente