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
- En ningún momento se vio alterado su contenido con los experimentos que estuve realizando anoche.
- 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
- Arrancar con un livecd
- Escribir en grub
- root (hd0,5)
- 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.
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…
Me gustaMe gusta
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
Me gustaMe gusta
@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é 😉
Me gustaMe gusta
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
Me gustaMe gusta
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?
Me gustaMe gusta
gracias por el tutorial amigo, me servira cuando pierda el grub
saludos!!
Me gustaMe gusta
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.
Me gustaMe gusta
Otra solución adicional al problema, muchísimas gracias Wign por el aporte.
Un saludo compañero
Me gustaMe gusta