viernes, 27 de mayo de 2011

Recuperar Grub

Uno de los problemas que nos podemos encontrar cuando instalamos otro sistema operativo en nuestro PC, es perder el gestor de arranque de los sistemas operativos, es muy común cuando tenemos una instalación  Linux e instalamos un Windows u otro Linux podemos perder el arranque de alguno de ellos, y eso es porque se escribe en el MBR (Master Boot Record) es reescrito por el del último sistema instalado, borrándonos el GRUB, gestor de arranque que utiliza las distribuciones Linux.
Vamos a ver como resolver este problema recuperando el GRUB en sus dos versiones. Para las 2 versiones siempre necesitaremos un CD Live de arranque con un sistema Linux, (ya sea SystemRescueCD, Ubuntu, u otro que tenga capacidad de arranque desde el cd rom u usb, sin depender del disco duro).

Grub2 (para las versiones más modernas)
Lo primero que debemos hacer es arrancar el live-cd o usb y abrir una terminal.
Necesitamos saber cuales son nuestros discos duros, para ellos teclearemos desde la consola en modo root o superusuario:

root@gallardo:/tmp# fdisk -l
Disco /dev/sda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xbd12bd12

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1               1        4863    39062016   83  Linux
/dev/sda2            4864        5045     1461915   82  Linux swap / Solaris
/dev/sda3            5046        9729    37624230   83  Linux

Disco /dev/sdb: 20.0 GB, 20020396032 bytes
255 heads, 63 sectors/track, 2434 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcb11cb11

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1   *           1        2310    18555043+  83  Linux
/dev/sdb2            2311        2 

Deberemos saber cual es la partición donde esta nuestro sistema Linux a recuperar. En este caso teníamos ya instalado un sistema Linux en sda y hemos instalado otro en sdb, pero en la instalación este ultimo lo hemos perdido y por lo que el que vamos a recuperar es el sdb que tiene el Grub2 y el sda tiene el Grub que lo veremos más adelante.
Por lo que tenemos que montar la partición sdb1 que es el que tiene el sistema, porque podemos saber que esta la partición, porque es el que tiene el sistema de archivos Linux  (Id=83), necesitamos montarlo.

# Creamos el punto de montaje
# mkdir /mnt/linux
# mount /dev/sdb1 /mnt/linux

Vamos a montar una serie de dispositivos por si nos hicieran falta esto es si os dice sobre todo que el /dev no esta montado, como me paso en mi caso.
#mount --bind /dev /mnt/linux/dev
#mount --bind /dev/pts  /mnt/linux/dev/pts
#mount --bind /proc /mnt/linux/proc
#mount --bind /sys  /mnt/linux/sys
Ahora ya podemos restaurar el GRUB.
Para acceder al sistema montado necesitamos hacer un chroot, ahí veces que le tenemos que decir con que interprete de comando necesitamos acceder, por lo que teclearemos

#chroot /mnt/linux /bin/bash

Ahora ya podremos reinstalar el grub y actualizarlo

# grub-install --recheck /dev/sda 
# update-grub2
si da fallo
# apt-get -f install grub2 

Con esto ya tendrías el grub2 recuperado

Grub1
Lo podemos hacer igual que en el caso anterior o también lo podemos hacer justo al arrancar, una vez que estamos en grub.

Mediante el intérprete de comandos GRUB
Opción 1
Ejecutamos los siguientes comandos:
    # Ejecutamos el interprete de comandos del GRUB
    $ grub
    # Indicamos dónde se encuentra la partición de Ubuntu
    > root (hdX,Y)
    #Instalamos GRUB en ese disco
    > setup (hdX)
    # Salimos del intérprete de comandos de GRUB
    > quit

    Donde X es el número de disco rígido, y Y es el número de partición. Este sistema difiere un poco del usado para montar las particiones en GNU/Linux; ambos son un único número decimal y comienzan en 0; por ejemplo:
    • hd0: es el primero disco duro completo, al igual que hda o sda
    • hd0,0: es la primera partición del primer disco duro, al igual que hda1 o sda1
    • hd0,1: es la segunda partición del primer disco duro, al igual que hda2 o sda2
    • hd1,2: es la tercera partición del segundo disco duro, al igual que hdb3 o sdb3
    El primer disco duro del GRUB es el primer disco duro maestro, el segundo es el primer disco duro esclavo, el tercero es el segundo disco duro maestro, y así sucesivamente.

    Opción 2
    Desde una consola ejecutamos los siguientes comandos:
    # Ejecutamos el intérprete de comandos de GRUB
    $ grub# Busca dónde está la partición de Ubuntu
    > find /boot/grub/stage1
    # Poner el valor devuelto por el paso anterior
    > root (hdX,Y)
    # Instalar GURB en el primer disco duro
    > setup (hd0)
    # Salir del intérprete de comandos de GRUB
    > quit
    Una vez que hemos terminado para salir del chroot ejecutaremos
    exit 
    y para desmontar todas las unidades que hemos montado manualmente ejecutaremos el umount y para no tener que ir una a una le damos la opción de -a
    umount -a
    Espero con estas indicaciones os saque de un apuro.

    No hay comentarios:

    Publicar un comentario