Recuperar GRUB 2 tras instalar Windows

Dichoso Windows! Si usas Windows y luego instalas Linux en otra partición el mismo grub te añadirá las particiones de Windows y las de Linux sin ningún problema. ¿Por qué entonces cuando lo haces al revés Windows no tiene en cuenta que NO es el único sistema operativo del mundo y que es posible que en tu máquina tengas ya configurado algo en el MBR?

Antes era más sencillo con el LILO o con GRUB. Bastaba con arrrancar con el «Super Grub Disk» (un programa antiguo pero que me ha sacado de más de un apuro) y restaurar tu MBR o simplemente arrancar la paartición que desees y luego reparar el MBR.

Pero con GRUB 2 la cosa cambia. El Super Grub Disk no me detectaba la partición de Linux (lo que hizo que algo empezara a subir hasta ponerse casi de corbata) así que Googleando, con un litro de café y probando varias cosas al final lo pude solucionar así:

1. Bajar la versión 9.10 de Ubuntu y quemarla en un CD … a pesar de ser usuario fiel de Debian 🙁

2. Arrancar con el CD de Ubuntu y arrancar con la primera opción, que no te hace cambios en el disco

3. Una vez cargado Ubuntu, abrimos una consola y ejecutamos:

  • sudo fdisk -l     // donde nos saldrá la tabla de particiones y debemos buscar la nuestra de Linux
  • sudo mount /dev/sda3 /mnt    // mi partición de Linux está en /dev/sda3
  • sudo grub-install –root-directory=/mnt /dev/sda

Y si todo ha ido bien, te restaurará el Grub anterior (en el que tapoco tenía Windows :))

En el caso de que haya dado error por no tener el fichero grub.cfg, lo podemos regenerar así:

  • sudo mount –bind /proc /mnt/proc
  • sudo mount –bind /sys /mnt/sys
  • sudo mount –bind /dev /mnt /dev
  • sudo chroot /mnt update-grub

Luego reiniciamos el equipo y veremos nuestro anterior Grub 2 y, como dije, sin el Windows ya que antes no lo tenía instalado.
Para añadir la partición de Windows tenemos que crear un fichero en /etc/grub.d al que llamaremos 20_windows_xp (ver /etc/grub.d/README para entender el formato del fichero):

#! /bin/bash -e cat << EOF
menuentry «Microsoft Windows XP Professional» {
set root=(hd0,2)
chainloader +1
}
EOF

(No olvidar meter un salto de línea después del EOF)

Luego ejecutar el siguiente comando (ya una vez arrancado nuestro Linux):

  • sudo update-grub2

Reiniciamos para verificarlo y, si no ha salido la partición de Windows, siempre la podemos añadir a mano en el grub.cfg (aunque luego cuando haya una actualización y se regenere la perderemos). Para ello editamos /boot/grub/grub.cfg y añadimos esto:

menuentry «Windows xp» {
insmod ntfs
set root=(hd0,2)
chainloader +1
}

Teniendo en cuenta que yo puse hd0,2 porque tengo en /dev/sda2 mi Windows

Deja un comentario