¿"You need to load the kernel first"? [Solucionado]

Hola, gente. Mucho tiempo desde la última vez que me pasé por aquí. ¿Qué tal todo?

Yo hace unos días actualicé mi viejo IBM para probar la última distribución, la 11.04, y me he encontrado con un tema curioso.

Así, de repente, GRUB (1.99 rc1 que ) dice que no encuentra el archivo, y que primero debo cargar el núcleo. He buscado en Internet y he encontrado este hilo que, al parecer, lo soluciona en el primer mensaje de la segunda página, pero hay cosas que no me cuadran y quiero asegurarme antes de meter la pata, entre otras cosas por que este disco lo comparte con un WindowsXP y no me apetecería tener que reinstalarlo todo otra vez.

Primera cosa que no me cuadra

Si bien el error aparece al seleccionar el arranque por primera vez, si se insiste termina arrancando. Es como si al principio no le diera la gana y luego dijera "Vale, pesado, ya te lo arranco". Y esto es algo que me deja así: confuso . A ver, si no lo encuentra la primera vez, ¿por qué sí la encuentra a la cuarta o a la quinta?

Segunda y tercera cosa rara

La solución que he encontrado dice que el problema es que cuando GRUB 2 crea el archivo de configuración cuenta las particiones a partir de "0", pero que debería contarlas a partir de "1", así que hay que sumarle uno al número de partición (por ejemplo, si dice que es la hda1, pues hay que poner hda2).

Pero es que en mi archivo de configuración del GRUB (/boot/grub/grub.cfg) hay dos cosas raras. Pongo un trozo para que lo veáis:

menuentry 'Ubuntu, con Linux 2.6.38-8-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod part_msdos
insmod reiserfs
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 85e58ffe-1d54-4438-8b40-db3636cc3ec8
linux /boot/vmlinuz-2.6.38-8-generic root=UUID=85e58ffe-1d54-4438-8b40-db3636cc3ec8 ro   quiet splash vt.handoff=7
initrd /boot/initrd.img-2.6.38-8-generic
}
menuentry 'Ubuntu, con Linux 2.6.38-8-generic (modo recuperación)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod part_msdos
insmod reiserfs
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 85e58ffe-1d54-4438-8b40-db3636cc3ec8
echo 'Loading Linux 2.6.38-8-generic ...'
linux /boot/vmlinuz-2.6.38-8-generic root=UUID=85e58ffe-1d54-4438-8b40-db3636cc3ec8 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.38-8-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod reiserfs
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 85e58ffe-1d54-4438-8b40-db3636cc3ec8
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_msdos
insmod reiserfs
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root 85e58ffe-1d54-4438-8b40-db3636cc3ec8
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 46F02E42F02E3917
drivemap -s (hd0) ${root}
chainloader +1
}

Como veis, los nombres de las particiones usan una nomenclatura que nunca había visto: ¡¿¡particiones msdos!?! Por ejemplo, dice que Ubuntu está en "msdos5", y no en "sda5", como dice GParted. Y por otro lado, la numeración sí se corresponde con la real, o al menos se corresponde con lo que dice GParted, es decir que no tengo que "sumarle uno" como dice la solución.

La verdad es que este archivo es muy raro. Antes era mucho más sencillo, teniendo únicamente entradas "menuentry" con una sintáxis mucho más simple. ¡Ahora incluso tiene sentencias if! eek ¿No se me habrá colado un virus verdad? Si necesitáis verlo completo, sólo tenéis que pedirlo y os lo pongo aquí con mucho gusto. (Ahora, después de releerlo, no estoy seguro pero, ¿antes el archivo que definía el menú de arranque no era otro?)

¿Alguien sabe qué puede estar pasando? ¿He encontrado un error? Por si es importante, la partición principal de Linux es una reiserfs y la home es una ext4.

Según la guía ubuntu no hay que modificar el archivo grub.cfg, hay que generarlo automáticamente con update-grub2, en verdad habría que modificar /etc/grub.d/10_linux.

Además debería corresponder la numeración.

Lo de "msdos5" parece bastante normal por lo que he visto por ahí, aunque no se el motivo pero a saber. De todas formas ese archivo es para que lo entienda la máquina y algún usuario avanzado. Mejor centrarse en el /etc/grub.d/10_linux. Aunque siempre tienes google, y ahí hay muchas respuestas.

Gracias AllsSecs.

He ejecutado el programa "update-grub2" y parece que ahora sí arranca a la primera. De todas formas, y si se me permite, no voy a dar el tema por solucionado todavía. Si me arranca tres días seguidos a la primera, entonces sí.

Pues iba a cerrar el tema pensando que ya se había solucionado, pero no. Después de cargar dos días seguidos sin problemas, fue ayer y volvió a las andadas. sad

Vale, después de haber actualizado un par de veces, parece que ahora ya funciona del todo bien. Supongo que sería algún error de algo... Un error, vamos.

Cierro el tema.