sábado, 26 de marzo de 2011

Recuperar GRUB2 dañado



Uno de los problemas que nos podemos encontrar en el caso de reinstalar o instalar un sistema operativo diferente (por ejemplo Windows) es que el MBR (Master Boot Record) se reescribe por el último sistema instalado, borrándonos GRUB2. Nos puede suceder también (como me pasó a mí) al sacar un disco de mi PC donde estaba alojado GRUB2, que no era el disco de sistema.

Para repararlo necesitaremos una distribución en LiveCD como Ubuntu 9.10 o superior (en mi caso utilicé el mismo CD que usé al instalar el sistema). Nos debemos asegurar que el cargador de arranque que utilice el LiveCD sea GRUB2, y no LILO o GRUB.

Arrancamos con el LiveCD y abrimos una terminal. Para saber en qué partición tenemos Ubuntu ejecutamos lo siguiente:

sudo fdisk -l

Montamos a continuación en /mnt. En mi caso es sda1, en caso contrario reemplacemos por la nuestra:

sudo mount /dev/sda1 /mnt

Luego, montamos el resto de los dispositivos:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /dev/proc

Y ejecutamos el comando chroot para acceder como root al sistema de archivos de nuestro disco con Ubuntu:

sudo chroot /mnt

Por último cargamos GRUB2 en el MBR ejecutando el siguiente comando:

grub-install --recheck /dev/sda

Recuerden de substituir sda por nuestro disco de Ubuntu.

Sólo nos queda configurar GRUB2 para que aparezcan la lista completa de sistemas operativos y kernels Linux:

sudo update-grub2

Reiniciamos y todo volverá a estar funcionando como antes.

3 comentarios:

Anónimo dijo...

Esto para que sirve?:

"Luego, montamos el resto de los dispositivos:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /dev/proc"

OzK dijo...

Si montamos solamente /dev/sda1 sólo tenemos acceso a los archivos. Montando /dev completo y /proc logramos comunicar con el kernel y ejecutar cosas dentro de nuestro disco en vez de en la LiveCD.

fist dijo...

xke bindmounteas proc en /dev y no dentro de /mnt ?