Spacefun GRUB Widescreen

Cómo reinstalar (de verdad) el Grub de nuestro sistema Gnu/Linux después de instalar Windows

Es la historia de siempre: Nos vemos en la obligación (por cuestiones de trabajo o de estudios) de reinstalar Windows en una máquina en la que ya habíamos decidido tener únicamente una o varias distribuciones de sistemas operativos libres. Y Windows, como es “muy suyo”, nos pisa el gestor de arranque Grub que teníamos instalado en el Master Boot Record (MBR) de nuestro disco duro. Vamos a reinstalar Grub en el MBR para poder optar durante el arraque del sistema a iniciar con Windows o con cualquiera de los sistemas operativos que tengamos instalados en las diferentes particiones de nuestro disco duro.

En este caso de ejemplo, he tenido que reinstalar Windows en el ordenador en el que venía de fábrica para hacer unas pruebas, antes sólo tenía una instalación de Debian Testing. Para hacer esta recuperación únicamente he tenido que usar un LiveDVD de Linux Mint Debian Edition.

1. Arranca el ordenador con un LiveCD o LiveDVD.

2. Abre una terminal y determina el disco duro en el que tenemos instalados los diversos sistemas operativos:

$ sudo fdisk -l

En nuestro caso de ejemplo nos devolverá esto:

Disk /dev/sda: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders, total 78140160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x04040403

   Device Boot    Start      End   Blocks Id
/dev/sda1          2048  2099199  1048576 82 Linux swap
/dev/sda2       2099200 40120319 19010560 83 Linux
/dev/sda3   *  40120320 78139391 19009536  7 HPFS/NTFS/exFAT

En este caso sólo tenemos un disco duro, el /dev/sda, y la partición en la que tenemos instalada una distribución de Gnu/Linux es la /dev/sda2

3. Montamos en /mnt la partición en la que tenemos instalada una distribución de Gnu/Linux (en nuestro caso la /dev/sda2):

$ sudo mount /dev/sda2 /mnt

4. Montamos el resto de dispositivos:

$ sudo mount --bind /dev /mnt/dev

y

$ sudo mount --bind /proc /mnt/proc

5. Con chroot accedemos como root al sistema de archivos de la instalación Gnu/Linux que estamos usando para recuperar Grub. Es decir, pasaremos de ser el root de nuestro LiveCD o LiveDVD a ser el root del sistema que tenemos instalado en el disco duro (que acabamos de montar en el directorio /mnt del LiveCD o LiveDVD):

$ sudo chroot /mnt

6. Y ahora que estamos trabajando como root desde la instalación en el disco duro, reinstalamos el Grub:

# grub-install --recheck /dev/sda

Pon atención: Es /dev/sda (no /dev/sda2). La salida debería ser:

Installation finished. No error reported.

7. Salimos de chroot:

# exit

8. Cerramos la terminal:

$ exit

9. Y reiniciamos el sistema. Acuérdate de sacar el LiveCD o LiveDVD del lector de discos.

Al reiniciar el sistema veremos que ha vuelto Grub, pero sólo nos da la opción de arrancar con el kernel o kernels presentes en la partición que utilizamos al hacer la recuperación con chroot (/dev/sda2 en nuestro ejemplo). Así que esperamos a que finalice el arranque y…

10. Abrimos una terminal e iniciamos sesión como root:

$ su -

11. Tras introducir la contraseña del root, actualizamos Grub:

# update-grub2

Que, en nuestro caso, generará la siguiente salida:

Generating grub.cfg ...
Found linux image: /boot/vmlinuz
Found initrd image: /boot/initrd.img
Found Microsoft Windows on /dev/sda3

Si volvemos a reiniciar el sistema, veremos que Grub ya nos dará opción a arrancar con cualquier sistema que tengamos en el disco.

Miguel Menéndez

Administrador de sistemas, auditor de redes y seguridad.