Linux

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:

grub loader cargador arranque bootAsí, 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.

mbr disco duro sector arranque boot sector

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 -lCon é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.

fdisk linux ext2 fat32

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/
mkdir linux
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):

mount -t ext2 /dev/sda5 /media/linuxHay 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
mount -o bind /dev /media/linux/dev
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:

chroot /media/linuxPerfecto. 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
find /boot/grub/stage1
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.

root (hdA,B)
setup (hdA)
quit
Al realizar estos pasos, hemos reestablecido el grub como gestor de arranque.

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.