Recuperar el arranque de Linux
Uno de los principales problemas que suelen tener los usuarios que utilizan linux y windows (en el mismo ordenador), es que si se ven en la necesidad de reinstalar windows, se suelen «cargar el arranque» que hace posible la elección del sistema operativo.
La tarea de estos gestores de arranque, es arrancarse al iniciar el equipo, y mostrar un menú donde el usuario puede elegir el sistema operativo (windows, linux, beos, unix…) que quiere utilizar.
Existen varios gestores como lilo o syslinux, pero sin duda el más utilizado y extendido es el grub, algo similar a esta imagen:
Así, varios sistemas operativos diferentes (o varias versiones iguales) pueden coexistir en el mismo ordenador como sistemas independientes.
Para instalar varios sistemas operativos en un mismo disco, debemos realizar las llamadas particiones en el disco duro, unas divisiones más pequeñas donde instalaremos los diferentes sistemas por separado.
El grub se «activa» en el sector de arranque (MBR) del disco duro (primera zona del disco que se lee), y así, al arrancar el equipo, se lee este sector (que redirige a donde está realmente instalado) para luego iniciar el sistema seleccionado.
He perdido el arranque de Linux
Si tenemos linux instalado en nuestro equipo, e instalamos (o reinstalamos) windows, este último instala su propio cargador en el MBR (en el caso de tener un sólo windows es transparente al usuario), sobreescribiendo por lo tanto, el gestor de arranque grub de linux, y evitando la posibilidad de entrar a los demás sistemas operativos.Para recuperar el grub sólo tenemos que arrancar desde un live CD de linux como Ubuntu y restaurar el MBR para que vuelva a dirigir a donde está instalado grub.
Recuperar el grub de Linux
Arrancamos desde el live CD de Ubuntu. Vamos al menú Aplicaciones / Accesorios / Terminal para abrir una consola y comenzar. En un live CD no tenemos password de root, así que con escribir sudo su basta para acceder con privilegios de administrador.Lo primero es conocer la estructura de nuestro disco. Para ello utilizamos el siguiente comando:
fdisk -l
Con él se puede ver la lista de particiones del disco. En linux, los dispositivos físicos (ratón, tarjeta sonido, disco duro, etc…) se almacenan en la carpeta /dev/ (devices).
Los discos duros se suelen denominar /dev/hdaX (IDE) o /dev/sdaX (SATA o USB), donde X es el número de la partición del disco.
Usaremos las columnas dispositivo, inicio y sistema para identificar las particiones.
Si nos fijamos, en nuestro ejemplo, tenemos -entre otras- las siguientes particiones:
- /dev/sda1: Una partición Compaq diagnostics. La clásica partición para restaurar sistema que utilizan algunas marcas como Acer.
- /dev/sda2: La partición donde está instalado Windows (marcada como partición de inicio), en este caso con sistema de ficheros FAT32, aunque también puede estar en NTFS.
- /dev/sda5: La partición donde tenemos instalado linux. No confundir con /dev/sda6, que es la partición swap (intercambio).
La partición que nos interesa es /dev/sda5, pues es donde tenemos instalado nuestro linux. Nos dirigimos al directorio /media/, que es donde se suelen montar las particiones, y creamos el directorio linux:
cd /media/
Una vez creado, montamos la partición linux del disco duro en ese directorio, especificando el sistema de ficheros ext2 (el más usual, aunque no el único):
mkdir linux
mount -t ext2 /dev/sda5 /media/linux
Hay que tener en cuenta que actualmente estamos trabajando sobre un linux live (en CD), la idea es montar el linux del disco duro y comenzar a utilizar su estructura, en lugar del linux de CD (actual).
Pero aún nos falta tener en cuenta una cosa: Las rutas /dev/ (dispositivos físicos) y /proc/ (información del kernel, sistema, etc…) se montan una sola vez al iniciar el sistema (montado en la estructura del CD), necesitamos montarlo ahora en la partición linux del disco duro.
mount -t proc none /media/linux/proc
Con esto, montamos la ruta /proc/ y la ruta /dev/ (con bind, hacemos un montaje de un directorio ya existente y montado). Ahora sólo queda establecer el linux del disco duro como raiz con chroot:
mount -o bind /dev /media/linux/dev
chroot /media/linux
Perfecto. La estructura actual es ahora la del disco duro en lugar de la del CD. Ahora sólo falta reestructurar el grub, así que entramos en su entorno de control:
grub
Al buscar el fichero /boot/grub/stage1, nos devuelve algo similar a esto: (hdA,B), donde A es el disco duro (en el caso de tener varios) y B es la partición.
find /boot/grub/stage1
root (hdA,B)
Al realizar estos pasos, hemos reestablecido el grub como gestor de arranque.
setup (hdA)
quit
En el caso de que al seleccionar un sistema operativo en el menú del grub, nos de un error, nos quedaría modificar el menú (/boot/grub/menu.lst) para cambiar las particiones que están mal configuradas.