Recuperar GRUB2 (1.97~beta4) después de instalar Windows


ÍNDICE

1. ¿A quién va dirigido este artículo?
2. ¿Qué se necesita?
3. Proceso


1. ¿A quién va dirigido este artículo?

Esta guía puede ser útil para usuarios de equipos donde el GRUB2 es utilizado después del encendido para escoger el sistema operativo a utilizar. Luego de una re-instalación de Windows por lo general desaparece el GRUB y el sistema por sí solo arranca con Windows, sin darnos la posibilidad de iniciar nuestra instalación GNU/Linux.

2. ¿Qué se necesita?

Se requiere un LiveCD de (K|X)Ubuntu en una versión igual o más reciente que 9.10 Karmic Koala. Es necesario arrancar desde el mismo para la recuperación del GRUB2.
--Tip: Es mucho mejor tomar la imagen del instalador de nuestra distribución y con ella convertir una unidad Flash USB o unidad de almacenamiento externa como unidad de autoarranque. El sistema operativo funcionará bastante más rápido que si es ejecutado desde un CD/DVD, y prácticamente no se notará que se está usando en modo Live--

3. ¿Qué se debe hacer?

Una vez iniciada la sesión, en una consola se deben ejecutar los siguientes comandos:

a)

$ sudo fdisk -l

La salida de este comando nos muestra información acerca de la tabla de particiones para el (los) disco(s) duro(s) instalado(s) en el equipo. Una de ellas contiene la instalación de nuestra distribución GNU/Linux, representada por "/" (root). Hay que identificar dicha partición para proseguir.
He aquí un ejemplo de lo que debe aparecer al ejecutar el mencionado comando.

$ sudo fdisk -l
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xda8dda8d

Device    Boot  Start    End    Blocks      Id    System
/dev/sda1   *      1     15524   124696498+   7    HPFS/NTFS
/dev/sda2       15525   19457   31591822+    5    Extended
/dev/sda5       15525   16010   3903763+    82    Linux swap / Solaris
/dev/sda6       16011   17834   14651248+   83    Linux
/dev/sda7       17835   19457   13036716    83    Linux

Como puede observarse, se muestran las particiones de Windows (con el sistema de archivos HPFS/NTFS), y las que son propias de nuestra distribución GNU/Linux. En este caso, en la partición /dev/sda6 es donde está el punto de montaje "/". Crearemos una carpeta en /mnt y montaremos ahí la partición, aunque podemos hacerlo en cualquier otro lado.

b)

$ sudo mkdir /mnt/temp
$ sudo mount /dev/sda6 /mnt/temp

También es recomendable montar /proc, /sys y /dev para evitar errores posteriores.

$ sudo mount -o bind /sys /mnt/temp/sys
$ sudo mount -o bind /proc /mnt/temp/proc
$ sudo mount -o bind /dev /mnt/temp/dev

c)

$ sudo chroot /mnt/temp

Así se hace un cambio de dónde queremos ubicar nuestra "/" de manera temporal (o virtual), y tenemos pleno acceso. No será necesario usar sudo para obtener los permisos requeridos para hacer los cambios por realizar.
Nota 1: Si en este paso aparecen errores como el que se muestra a continuación:

$ sudo chroot /mnt/temp
chroot: cannot run command `/bin/bash': No such file or directory

Esto se debe a que la partición elegida no es la correcta. La intención es montar la partición donde esta "/" (raíz de la instalación de linux que queremos recuperar) y que contiene el directorio "/boot".

d)

# update-grub

Nota 2: Si en este paso aparecen errores como este:

# update-grub
Generating grub.cfg ...  
Found linux image: /boot/vmlinuz-2.6.aa-bb-generic
Found initrd image: /boot/initrd.img-2.6.aa-bb-generic
grub-probe: error: Cannot find a GRUB drive for /dev/sda6.  Check your device.map.

En este caso /dev/sda6 es la partición que tenemos como "/".
Esto sucede porque en el archivo device.map no existe información acerca de nuestro sistema de archivos.
Para ello debemos abrir, editar y guardar este archivo.
Buscamos la ruta correcta:

# locate device.map

Esto muestra la ruta donde se encuentra el archivo. Se puede abrir con kate, gedit, nano...
El archivo puede encontrarse vacio. La siguiente linea es un ejemplo de lo que se debe agregar:

(hd0) /dev/sda

Hay que guardar el archivo y cerrarlo. Con esto le decimos al GRUB cual es la jerarquía para los discos duros que tengamos instalados en el equipo. En caso de ser solo uno con diversas particiones primarias y lógicas, con la linea del ejemplo basta.
Mas información acerca de como esta organizado el sistema de archivos aqui.

e)

# grub-install /dev/sda

Y en caso de errores en este paso, puede ejecutarse el comando:

# grub-install --recheck /dev/sda

Reiniciar el equipo. El GRUB2 debe aparecer como antes.


Fuentes:
https://wiki.ubuntu.com/Grub2
http://www.kubuntu-es.org/foro/200902/xp-borra-grub-mbr-recuperar-grub
http://www.ubuntu-es.org/?q=node/120290&page=1