GRUB: Incompatibilidad entre versiones

Enviado por mceds el 4 Junio, 2009 - 19:41.

Voy a estrenarme con los blogs de Esdebian intentando evitar que algún que otro incauto caiga en el mismo sitio que yo y, así, se ahorre unos cuantos dolores de cabeza, si Goo... si los diversos buscadores tienen a bien indexar esta página.

El escenario va a ser un PC portátil marca Lenovo. Los actores, un GNU/Linux Debian (Squeeze, para ser más exactos), un Microsoft Windows (una RC de Seven) y otro Linux en Live-CD, una Knoppix (¿alguien más lo dice en femenino?). Intentaré poner los mensajes originales en inglés (yo lo tengo así) y sus traducciones al castellano.

Y la introducción del drama, ésa por la que muchos han pasado: por las razones que fueren, llega un día y decides instalar un Windows en una partición reservada al efecto. Tras la operación, llega lo que todos sabemos: el master boot record (MBR) ha pasado a ser propiedad temporal de Windows, debido a esa costumbre infantiloide de Microsoft de borrar lo que antes hubiese (que, curiosamente, dejaron un momento de lado con Windows 2000 Professional).

No suele haber mucho problema ya que, quien más quien menos, todos solemos saber cómo recuperar el gestor de arranque que, en la mayoría de los casos, será GRUB. El procedimiento está sobradamente documentado y es muy simple: tan sólo hay que teclear dos o tres comandos.

Manos a la obra: busqué una caja con CDs de Knoppix que tenía guardada y agarré el más moderno que tenía: una 5.1.0. Creía que era más o menos reciente. Pero ¡ay! el tiempo pasa muy rápido en informática.

Para empezar, no arrancaban las X en mi portátil de 2008, pero eso no me importó porque sólo necesitaba una consola. Me puse frente al teclado y recité el encantamiento:

# grub
> find /boot/grub/stage1

Sorpresa. No encontraba el archivo:

Error 15: File not found
Error 15: Archivo no encontrado

Bueno, pues había que prescindir del comando 'find' del GRUB. Consulté su documentación y aprendí algo sobre cómo numera unidades de disco y particiones. La partición donde tenía mi /boot era la hd0,2. Así que lo intenté directamente:

# grub
> root (hd0,2)
Filesystem type is ext2fs, partition type 0x03
> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... no

Error 2: bad file or directory type

Comprobando si "/boot/grub/stage1" existe... no
Comprobando si "/grub/stage1" existe... no

Error 2: mal tipo de archivo o directorio

Como último recurso, me agarré al grub-install:

# grub-install hd0

Could not find device for /boot: Not found or not a block device
No se pudo encontrar un dispositivo para /boot: No se encontró o no es un dispositivo de bloques

A partir de ese momento, comenzaron los dolores de cabeza, intentando encontrar una explicación a algo del todo incomprensible. Revisé particiones, sistemas de archivos, tipos de archivos, monté, desmonté... el dichoso stage1 estaba ahí, lo veía de todas las formas posibles, pero GRUB no lo encontraba pese a que estaba delante de sus narices. Hasta que, en un golpe de suerte, di con esta página: https://bugs.launchpad.net/ubuntu/+source/grub/+bug/207001

En ella se explicaba que, debido a un cambio en el tamaño de ínodo predeterminado que crea e2fsprogs, los GRUBs anteriores a cierta versión no pueden leer los archivos creados por los GRUBs actuales. Y yo estaba intentando detectar archivos del GRUB de Squeeze (actual testing) con una Knoppix de los tiempos de Sarge:

Knoppix 5.1.0 GRUB: 0.95+cvs20040624-17sarge1
Ubuntu/Debian Squeeze/Debian Sid GRUB: 0.97-53

Dicho y hecho. Descargué la última Ubuntu, que también funciona como Live-CD, y los comandos entraron como la seda. Recuperé mi MBR en un minuto.

Imagen de Froggy
Enviado por Froggy el 4 Junio, 2009 - 20:18.

Me agrada el aporte, a veces es mejor cuando uno explica con detalles algun caso como ese, gracias aprendi algo nuevo.
Saludos wink

Imagen de StrayCat
Enviado por StrayCat el 7 Junio, 2009 - 12:02.

Tremendísimo aporte, mceds, sí señor.

Este es de esos post simples que te ahorran días de investigación.

GRACIAS!