Destruyendo y Recuperando GRUB

Vamos a ver que ocurre cuando se elimina el sector de arranque del disco y como se puede recuperar para poder seguir usando el PC. El sector de arranque según la Wikipedia es:

Un bloque de arranque (a veces llamado sector de arranque o MBR) es un sector en un disco duro, disquete, o cualquier otro dispositivo de almacenamiento de datos que contiene código de arranque, por lo general (pero no necesariamente), de un sistema operativo almacenado en otros sectores del disco.

El sector de arranque en PC ocupa los primero 512 bytes del disco (incluyendo la tabla de particiones). Cuando no hay nada ahí el sistema no sabe como iniciar y puede quedar en un estado indeterminado, por ejemplo un cursor parpadeando o un mensaje indicando que se introduzca algún dispositivo de arranque.

Para borrar esta parte del disco vamos a arrancar con un LiveCD e introducir el siguiente comando:

dd if=/dev/zero of=/dev/hda bs=446 count=1

Cuando ahora tratemos de arrancar el sistema veremos lo siguiente:

FATAL: No bootable medium found! System halted.

Indicando que no hay ningún medio para arrancar.

Si queremos borrar el MBR completo tomaríamos los 512 bytes.

dd if=/dev/zero of=/dev/hda bs=512 count=1

Para ambos casos sustituir hda por el dispositivo adecuado.

Ahora vamos a recuperar el GRUB volviéndolo a instalar en el sector de arranque.

Lo primero será volver a arrancar la máquina con el LiveCD.

Una vez arrancada, miramos la tabla de particiones para saber que discos están en el sistema.

trk ~ # fdisk -l

Disk /dev/hda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         991     7960176   83  Linux
/dev/hda2             992        1044      425722+  82  Linux swap / Solaris

Vemos una tabla simple con una partición del sistema y otra para swap. Tenemos que acceder a los datos del sistema para eso vamos a hacer chroot. La razón es que tenemos que ejecutar la instalación de grub desde dentro del sistema ya que es ahí donde se encuentra toda la información necesaria para llevarla a cabo.

En primer lugar vamos a crear un directorio de trabajo.

# mkdir linux

Vamos a montar la partición del sistema sobre este directorio de trabajo.

# mount /dev/hda1 /root/linux

Ahora vamos a montar los pseudos sistemas de ficheros /dev y /proc para poder hacer chroot.

# mount -t proc none /root/linux/proc
# mount --rbind /dev /root/linux/dev

Ahora podemos hacer chroot, hay que tener en cuenta que si el LiveCD es de 32 bits sólo podremos hacer chroot a sistemas de 32 bits y viceversa, sistemas de 64 bits con 64 bits.

# chroot /root/linux /bin/bash

Cambiará el PS1 de la consola que será la primera señal de que estamos en otro sistema. Aparecemos sobre la raíz del sistema. Podemos en este punto cargar nuestro .bashrc haciendo lo siguiente.

# source /root/.bashrc

Pero es opcional y casi que no merece la pena.

Ahora vamos a ejecutar el comando que nos restaurará Grub en el MBR.

# grub-install /dev/hda

Veremos la siguiente salida.

Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

# this device map was generated by anaconda
(hd0)     /dev/hda

Este sistema es una CentOS así que la salida que veais puede variar en otras distribuciones. La primera línea es la que indica que la instalación ha sido correcta, la segunda es un pequeño informe con el mapeo de dispositivos.

Concluida la instalación salimos de la sesión de chroot y desmontamos la partición.

# exit
# umount /root/linux

Los psudos sistemas de ficheros no se pueden desmontar porque están asociados al sistema del LiveCD, es decir, están en uso.

Ya podemos reiniciar a nuestro sistema.

# reboot

Herramientas

Como viene siendo habitual, todo a sido probado y comprobado sobre una CentOS 5.3 y Ubuntu 11.04 en máquinas virtuales de VirtualBox y el CD de rescate el gran TRK 3.4 build 367.

This entry was posted in Linux, Tips and tagged , , , , . Bookmark the permalink.

2 Responses to Destruyendo y Recuperando GRUB

  1. Interesante y útil el artículo; me ha gustado el enfoque de explicar cómo cargártelo para luego conseguir recuperarlo pero ¿¡¿tenía que ser grub2?!? (bueno, vale… acepto barco ;P)

  2. nordri says:

    Acéptalo que de momento es el que está más difundido. Por las moscas, también lo he comprobado en Ubuntu 11.04 Funciona perfectamente.

    Hay por ahí alguna guía que evita el montaje de los psudos sistemas de ficheros, pero a mi nunca me ha funcionado.

Comments are closed.