Este es un tema que está muy manido pero me ha pasado una cosa a la que google no me ha dado contestación así que la pongo aquí.
Caso típico: el grub no funciona porque hemos instalado windows (mala idea) o, como es mi caso, tenemos dos particiones de linux y hemos hecho un debootstrap sobre la partición del linux en la que teníamos instalado el grub. Bueno, quizá este último caso no sea tan típico. :-D
Para restaurar el grub lo normal es meter un cd-live, montar la partición en la que tienes tu linux, hacerle un chroot y luego elegir entre dos opciones.
La primera ejecutar grub-install /dev/hda
(o sda o lo que sea) y reiniciar.
La segunda ejecutar grub
y una vez dentro root (hd0,0)
(o la partición donde tengas el linux) y luego setup (hd0)
o el disco donde quieras instalar el grub.
También está la opción de no hacerle un chroot y ejecutar grub-install --root-directory=/mnt /dev/hda
donde /mnt es donde tienes montada la partición de linux y hda es tu partición de linux.
Lo malo viene cuando haces todo eso y te responde con un molesto:
/dev/hda: Not found or not a block device
¿Pero como que no lo encuentras? ¡Pero si lo tienes enchufado, melón!
Pues después de naufragar en todo internet probando todo lo probable (escribir cosas, quitar jumpers, poner jumpers, tocar la BIOS) me vino a la cabeza lo siguiente: ¿y si lo que pasa es que no lo encuentra porque no está?
Total que miro en /dev y no existe ningún dispositivo hda, hda1, hda2, ...
La solución:
Montamos la partición de linux en /mnt por ejemplo, nos vamos a /dev y escribimos mknod hda b 3 0
, mknod hda1 b 3 1
, ..., y así con todos.
Una vez hecho eso ya podemos seguir la receta habitual de grub-install /dev/hda
Comentarios
/dev/hdX does not have any corresponding BIOS drive
Si nos dice esto tendremos que usar el parámegro
--recheck
quedando el comando así:grub-install --root-directory=/mnt --recheck /dev/hda