Recuperar grub con un livecd

La cara de sorpresa que se me ha tenido que poner al encender el equipo hoy ha debido ser de órdago.

Resulta que anoche estuve jugando un rato con UnetBootIn y las particiones de mi disco duro y las consecuencias no han podido ser más desastrosas: el equipo no arrancaba 😦

Para colmo de males no tenía a mano el pendrive en el que llevo SuperGrub (para una vez que me hace falta ya es mala suerte) así que no me ha quedado más remedio que hacerlo manualmente.

Por fortuna no es complicado (y recordaba cómo se hacía) pero ya sabéis que normalmente prefiero ofrecer soluciones gráficas a los problemas cotidianos.

Requisitos

Contar con el livecd de cualquier distribución; particularmente he usado Puppy Linux pero os podría servir cualquiera que tengáis a mano. Por no ser necesario no necesitas ni que arranque el entorno gráfico (Gnome, KDE, XFCE, …) pues lo haremos todo desde la terminal.

Procedimiento

Arrancar con el livecd y abrir una terminal (si la distribución elegida arranca el entorno gráfico)

Descubrir la partición de nuestro Linux desaparecido

Lo primero es averiguar en qué partición está nuestra distribución; en mi equipo se encuentra en /dev/sda (observar que he eliminado el 6 del final que aparece al lanzar el mount)

Confirmar que es la partición correcta

Para ello podemos navegar por su contenido y asegurarnos que realmente es la que andamos buscando (debe encontrarse la carpeta /tmp con lo último que colocamos en ella, el directorio /root si no lo hemos ubicado en otra partición, …)

Otra forma de hacerlo es directamente desde Grub: abre una terminal y ejecuta en ella

grub

No te asustes, no es tan complicado como parece.

Escribe en el prompt que te ha salido un

root (

y pulsa el tabulador. Automáticamente aparecerán la lista de unidades listas para ser utilizadas.

En mi caso aparece lo que puede verse en la figura (y porque al portátil le he pinchado un pendrive para que aparezca algo más… en caso contrario me hubiese escrito directamente hd0 que, como se verá, es la respuesta correcta)

Conocimientos básicos sobre unidades y particiones

Si recordáis mi directorio raíz (/) era /dev/sda6. Si tuviese un segundo disco duro SATA (/dev/sd), como es el caso del pendrive, sería /dev/sdb1 (de momento no discutiré las particiones por lo que obviaré que alguien pueda pensar que debería terminar en 6 en lugar de 1).

Lo que realmente quiero que se entienda es que sdA y sdB cambian en la última letra y que se numeran comenzando desde cero (0); así sdA para grub es hd0, sdB es hd1 y, si tuviésemos sdC o sdD serían hd2 y hd3 respectivamente.

NOTA: los que tengáis discos IDE (o ATA) funciona exactamente igual salvo que el sistema os habrá dicho que el directorio raíz se encontraba en /dev/HDa6 o /dev/HDb1 (obsérvese que el único cambio es /dev/sd por /dev/hd)

Terminamos de escribir la primera línea (root)

Una vez que tenemos claro lo anterior (si no lo entiendes al principio no te agobies pues es normal que te hagas líos las n-cientas primeras veces) terminaré poniendo en el prompt lo siguiente

root (hd0,

y volveré a pulsar el tabulador para obtener lo siguiente

¿recordáis que mi directorio raíz estaba en /dev/sda6?

¿véis el 6 por alguna parte?

El motivo es que igual que pasaba con las unidades, a las particiones Grub les resta uno. Así mi sda6 sería la partición número 5. Si mi directorio raíz estuviese en /dev/sda1 sería la partición número 0.

Pues ahora si… ya he terminado de indicarle a Grub dónde está mi directorio raíz con la siguiente línea

root (hd0,5)

Pulsamos la tecla enter y vuelve a aparecer una nueva línea de prompt esperando nuestras órdenes.

Procediendo a instalar Grub

Tecleamos en el prompt

setup (hd0)

y pulsamos la tecla enter.

NOTA: Hemos usado hd0 porque como se vió algo más arriba la unidad de mi directorio raíz era /dev/sdA y por eso le correspondia. Si fuese /dev/sdB deberíamos poner

setup (hd1)

El sistema comenzará a realizar una serie de operaciones cuyo resultado, si todo va bien y no muestra ningún mensaje de error, será la reinstalación correcta de GRUB.

Conclusión

Ya sólo queda reiniciar el equipo y comprobar que, efectivamente, Grub vuelve a estar donde le corresponde.

Obsérvese que en este artículo no he tratado en ningún momento el contenido del fichero /boot/grub/menu.lst. Los motivos son varios

  1. En ningún momento se vio alterado su contenido con los experimentos que estuve realizando anoche.
  2. Una vez recuperado nuestro sistema es fácil de editar gráficamente para incluir en él todo lo que falta.

Resumen

Entiendo que puede parecer un proceso complejo pero queda resumido en

  1. Arrancar con un livecd
  2. Escribir en grub
    1. root (hd0,5)
    2. setup (hd0)

Recomendación

Si sabes cuál es la unidad (hd0) y partición (5) de tu directorio raíz (te recomiendo que lo busques ahora y lo dejes anotado en un lugar seguro antes de que te ocurra) es coser y cantar.

Si queréis podéis enviar ejemplos y los vamos traduciendo a Grub para que el personal le vaya perdiendo el miedo.

9 comentarios en “Recuperar grub con un livecd

  1. aziru dijo:

    No te lo vas a creer pero la semana pasada por “jugar” con el UnetBootIn también me cargué el sistema operativo, lo peor fue, que por no saber hacer cosas como esta al intentar volver a instalarlo me equivoque y monte el sistema de archivos en mi /home anterior y el /home en el /, asi que adios a todo lo que tenía ahí 😥

    A lo mejor te doy alguna idea para un artículo, ¿existe en ubuntu algún recuperador de archivos? En el ventanuco creo recordar que había varios…

  2. ArturoM dijo:

    Hola a todos,
    hay otra forma, aunque esta vez usando el sistema gráfico, que he usado en alguna ocasión.
    Yo lo he hecho con Ubuntu, me imagino que con otros LiveCD (como knoppix, pe.) también servirá.

    He aquí los pasos:
    1.- iniciar desde un liveCD
    2.- selecciona en el menú /sistema/administración/editor de particiones
    3.- elijes la partición donde tienes tu sistema
    4.- pulsa sobre ella con el botón derecho y eliges “gestionar flags”
    5.- seleccionas la opción “boot”
    6.- reinicias
    7.- voilá! ya tienes tu grub como antes

    Espero que os sirva

    Saludos

  3. @Aziru GRescue es el programa que yo uso para esas cosas

    @ArturoM gracias por la alternativa de solución; he estado tentado de probarla (no tengo más que utilizar UnetBootIn para cargarme el mbr) pero de momento creo que lo mejor es dejarlo anotado para futuros problemas. Si alguien se anima a probar ésta solución que comente cómo le fué 😉

  4. ManoloG dijo:

    Ufff, a mi me pasa eso y directamente, me pongo a llorar. Bueno eso haría hasta ahora. Desde ahora puedo consultar este magnífico blog que no paro de elogiar. Me parecen muy buenas e interesantes las soluciones y cuestiones que abordas.

    De nuevo felicidades José Antonio, y recupérate…

    Un saludo

  5. Gracias Manolo, se te agradece tanto el cumplido como el deseo de mi recuperación.

    Pero chiquillo, que no se note que cuentas con información “privilegiada” que a pesar del embotamiento general que tengo creo que no se está notando demasiado en la cadencia de publicación ¿o si?

  6. Wign dijo:

    Lo que yo he hecho, cuando me pasa esto, es insertar in liveCD y correr una linea de comandos. Luego teclear:
    grub-install /dev/hdX
    En donde X es la particion en donde instalaremos el GRUB, que debe corresponder, oviamente, al disco primario maestro y su primera particion. Con eso ya habremos sobrescrito la MBR de ella.
    Por lo menos eso me ha funcionado a mi las veces anteriores.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s