Recuperar arranque Grub usando un diskette o disco de arranque previamente preparado

Este wiki será muy cortito. ¡¡Lo prometo!! :-)

Contenido:

  1. Introducción y punto de partida
  2. Recuperando el Grub desde nuestro Kubuntu
  3. Recuperando el Grub desde nuestro Kubuntu, de forma "nativa"
  4. Documentación

Introducción y punto de partida

Partimos de que hicimos antes un diskette de arranque válido, como comenté en este wiki, por ejemplo, o bien de un disco CD válido también (hay info en la red de cómo se pueden hacer)

Por lo que fuera, el aranque ya no funciona.
En mi caso personal, poco después de escribir el anterior Wiki sobre diskette de arranque, decidí instalar una distro nueva en otra partición (siempre trasteando... :-)).
A pesar de que le dije que no instalara Grub algo debió pasar porque cuando quise reiniciar, mi arranque no aparecía, y en su lugar aparecía algo así como...

Grub >>
Error
15

Nada más y no salía de ahí.

Así que eché mano de mi diskette de arranque, reinicié con el diskette puesto (comprueba que tu ordenador pueda arrancar desde el diskette entrando en la BIOS o que lo haga desde un CD, si tienes un CD de arranque) y ¡voilà! arranque desde diskette, cargando stage2... y ahí estaba el menú de arranque y pude arrancar con toda normalidad mi Kubuntu.

Recuperando el Grub desde nuestro Kubuntu

Una vez arrancado el sistema, la recuperación del Grub y del arranque en el MBR de nuestro disco principal (el primero, supongamos que es /dev/sda, confírmalo en tu sistema) es muy sencillo.

En consola tecleamos:

usuario@MAQUINA:~$ sudo grub-install /dev/sda

Tendremos esta salida para el comando:

[sudo] password for usuario:
Searching for GRUB installation directory ... found: /boot/grub
Installing GRUB to /dev/sda as (hd0)...
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'.

(fd0)   /dev/fd0
(hd0)   /dev/sda

(Si tienes más discos, habrá más entradas, tales como

(hd1)   /dev/sdb
(hd2)   /dev/sdc

...etc.)

Y listo. Ya tenemos instalado de nuevo nuestro arranque.
(Por si acaso, guardemos agradecidos nuestro diskette/disco de arranque...)

Recuperando el Grub desde nuestro Kubuntu, de forma "nativa"

La forma anterior, me resultó perfectamente válida. Funciona.

Pero puede causarnos algún problema. Grub, no numera los discos de la misma manera que nuestro sistema operativo GNU-Linux. De tal manera que nosotros podemos pensar que sda es el primer disco duro, esto es, en "lenguaje Grub" hd0, porque tenemos otro disco duro que nuestro sistema operativo identifica como sdb.

Vale. Pensemos en el siguiente caso:
sda es un disco sata.
sdb es un disco IDE (en terminología "antigua" un hda).
Supongamos, por último, que en nuestra BIOS hemos puesto en la secuencia de arranque que el primero sea el sdb (el IDE) y el segundo para arranque sea el sda.

En ese caso, aunque nuestro sistema operativo los siga reconociendo como /dev/sda al sata y /dev/sdb al IDE, para Grub no son sda=hd0 (primer disco) y sdb=hd1. ¿Por qué? Porque Grub considera primer disco el primero que se intenta arrancar, y segundo el otro, y así sucesivamente.

En esos casos, la recuperación según el punto anterior no tendría resultado. (Más que nada porque en el disco que arranca primero, en el ejemplo sdb, no hay arranque, luego fallaría el arranque). Eso también puede dar errores de localizar el disco.

No me extiendo más. Resumiendo. Si lo anterior no os ha funcionado, os pongo cómo instalar el Grub de acuerdo con el "Manual Oficial" de forma "nativa":

En consola tecleamos:

usuario@MAQUINA:~$ sudo grub

Se carga la consola grub:

       [ Minimal BASH-like line editing is supported.   For
         the   first   word,  TAB  lists  possible  command
         completions.  Anywhere else TAB lists the possible
         completions of a device/filename. ]

grub>

Indicamos dónde está el directorio de arranque /boot/

Podemos teclear directamente root (hd1,0), si estamos seguros de que el /boot/ está en nuestro segundo disco duro (pues en el primero está Windows, por ejemplo):

grub> root (hd1,0)

Si el directorio /boot/grub/ (en nuestro sistema operativo GNU-Linux) estuviera en otro lugar, acondicionamos el comando.
Por ejemplo:

  • Si está en la primera partición del segundo disco (sdb1) ponemos --> (hd1,0)
  • Si está en la tercera partición del segundo disco (sdb3) ponemos --> (hd1,2)
  • Si está en la segunda partición del tercer disco (sdc2 ponemos --> (hd2,1)
  • etc.

¿Y si no estoy seguro de dónde está el directorio de arranque /boot/?

Pues lo buscamos:

grub> find /boot/grub/stage1

En mi caso sale:

(hd1,0)
(fd0,0)

Sale el diskette porque he arrancado el sistema con el diskette. Si no, lo esperable es que saliera sólo (hd1,0)

Pues le indicamos al grub dónde tenemos /boot/ en nuestro disco duro, o sea, (hd1,0)

grub> root (hd1,0)

Instalamos el Grub en el sector de arranque del disco duro

Instalamos el Grub para que arranque desde el primer disco (hd0), desde su Master Boot Record (MBR):

grub> setup (hd0)

Asunto terminado.

Si por alguna razón fuera necesario que arrancara desde alguna partición concreta de un disco duro, también podemos especificar la partición (recordad que en Grub se empieza a contar desde 0):

grub> setup (hd0,0)

No sé cuándo puede ser útil esto. ¿Quizás en los portátiles (laptops) que llevan una partición oculta o de restauración?

Documentación: