# Maldito Grub...

## Thylzos

Pues aquí estoy otra vez. Acabo de instalar Gentoo desde el Minimal CD y he configurado el grub de mi Debian para que me permita entrar también a mi nueva distro (que tanto trabajo me dio). Pero cuando selecciono la opción del Gentoo me dice algo del Error 2 y de que no encuentro un archivo o directorio.

He probado con fsck -y sda9 (mi partición), por si tenía algún problema, pero nada. Además, los archivos de mis variables del archivo menu.lst están todos bien indicados, ¿alguien podría echarme un cable?. Gracias  :Smile: 

----------

## achaw

Poestea el error completo, para saber de que estamos hablando...

Saludos

----------

## Thylzos

```
Booting 'gentoo Linux'

  root (hd0,8)

  Filesystem type is ext2fs, partition type 0x83

  kernel         /boot/kernel-genkernel-x86-2.6.24-gentoo-r4 root=/dev/ram0 ramdisk=8192 real_root=/dev/sda9 udev

  Error 2: No such file or directory
```

Ahí está, aunque lo digo de memoria...

----------

## achaw

```
/boot/kernel-genkernel-x86-2.6.24-gentoo-r4 
```

Ese archivo existe?

Postea tu grub.conf, hay algo mal...

Saludos

----------

## Thylzos

Sí, existe, comprobé todos los archivos del menu.lst, que es éste:

```
title      Debian GNU/Linux, kernel 2.6.24-1-686

root      (hd0,0)

kernel      /boot/vmlinuz-2.6.24-1-686 root=/dev/sda1 ro 

initrd      /boot/initrd.img-2.6.24-1-686

title      Debian GNU/Linux, kernel 2.6.24-1-686 (single-user mode)

root      (hd0,0)

kernel      /boot/vmlinuz-2.6.24-1-686 root=/dev/sda1 ro single

initrd      /boot/initrd.img-2.6.24-1-686

title      Debian GNU/Linux, kernel 2.6.18-6-686

root      (hd0,0)

kernel      /boot/vmlinuz-2.6.18-6-686 root=/dev/sda1 ro 

initrd      /boot/initrd.img-2.6.18-6-686

title      Debian GNU/Linux, kernel 2.6.18-6-686 (single-user mode)

root      (hd0,0)

kernel      /boot/vmlinuz-2.6.18-6-686 root=/dev/sda1 ro single

initrd      /boot/initrd.img-2.6.18-6-686

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian

# ones.

title      Other operating systems:

root

# This entry automatically added by the Debian installer for an existing

# linux installation on /dev/sda6.

title          Gentoo Linux 2.6.23-r8

root           (hd0,8)

kernel         /boot/kernel-genkernel-x86-2.6.24-gentoo-r4 root=/dev/ram0 ramdisk=8192 real_root=/dev/sda9 udev

initrd         /boot/initramfs-genkernel-x86-2.6.24-gentoo-r4

title      Ubuntu 7.10, kernel 2.6.22-14-generic (on /dev/sda6)

root      (hd0,5)

kernel      /boot/vmlinuz-2.6.22-14-generic root=UUID=00eb1232-f77d-4105-96a1-49f5b776e4c2 ro quiet splash 

initrd      /boot/initrd.img-2.6.22-14-generic

savedefault

boot
```

Por otra parte, intenté entrar al Gentoo con los comandos root y setup desde grub y cuando se pone a comprobar si stage1 existe, sale el error diciendo que no cuando en realidad sí. Qué mal me explico.

Además lo que dice es: "Error 2: Bad file or Directory", me acabo de fijar.

----------

## esculapio

Por ahi /boot sea otra partición, proba root hd0,0. Si te arranca desde otra distribución chequea desde alli que este todo correcto.

----------

## xSober

Holas

veo que estas escribiendo mal tu grub.conf

fijate en esto:

```
title=Gentoo Linux kernel-2.6.24-gentoo-r4

root(hd0,0)

kernel /kernel-2.6.24-gentoo-r4
```

si te fijas, defino la raiz en root(hd0,0)

en mi caso la primera particion del primer disco es donde monto el /boot

por lo tanto al pasarle la ruta al kernel solo le doy el nombre de archivo, omitiendo /boot ya que esta es la raiz ( root(hd0,0) )

saludos

----------

## Thylzos

Es que, yo no separé la carpeta boot del resto de ficheros, tengo TODO en la novena partición de un disco SATA, es decir, en sda9 o en (hd0, :Cool: .

----------

## i92guboj

En tiempo de arranque, grub te da las opciones para editar las rutas, edítalas, y prueba a borrar un pedacito y autocompletarlas con TAB, tal como harías en bash. De este mode podrás saber si las rutas están todas bien.

----------

## JuanSimpson

no necesitas mil particiones boot, con una es suficiente, copia el kernel de gentoo a la que si funciona y añade la entrada correspondiente.

Puedes hacer un soft link al kernel para no tener que escribir todo el nombre del archivo completo, yo he tenido problemas al hacer eso (escribir a mano nombres gigantes de kernels), de ahí que use make install (en el directorio de las fuentes del kernel)

----------

## the incredible hurd

 *JuanSimpson wrote:*   

> Puedes hacer un soft link al kernel para no tener que escribir todo el nombre del archivo completo

 

No no puede, grub no soporta enlaces simbólicos. De hecho, si lo hiciera, obtendría el mismo error 2 que está obteniendo.

Desconozco si lilo los soporta y es el que has usado, pero Thylzos evidentemente usa grub.

----------

## i92guboj

 *the incredible hurd wrote:*   

>  *JuanSimpson wrote:*   Puedes hacer un soft link al kernel para no tener que escribir todo el nombre del archivo completo 
> 
> No no puede, grub no soporta enlaces simbólicos. De hecho, si lo hiciera, obtendría el mismo error 2 que está obteniendo.
> 
> 

 

No se si no he entendido algo bien, pero grub siempre ha funcionado bien con enlaces simbólicos. Dos casos típicos son estos:

1.- Supongamos que tenemos lo siguiente en grub.conf

```

title vmlinuz-2.6.25 [default]

        root (hd0,4)

        kernel /vmlinuz-2.6.25 root=/dev/sdc8

```

Ésto significa que la partición de arranque sería hd0,5, una partición separada. Por ésto, la forma correcta de indicar la ruta del kernel sería tal y como está en el ejemplo de arriba. Sin embargo, mucha gente haría lo siguiente (que es conceptualmente INCORRECTO):

```

title vmlinuz-2.6.25 [default]

        root (hd0,4)

        kernel /boot/vmlinuz-2.6.25 root=/dev/sdc8

```

Si ésto funciona (y lo hace) es precisamente porque el 90% de los linuxes que existen, sitúan un enlace recursivo dentro de la partición boot, apuntando a sí misma. Eso hace que ambas rutas resuelvan de forma correcta. 

2.- El segundo caso, y aún más típico, es el uso del symlink vmlinuz para apuntar al último kernel construído e instalado. Make install crea dicho symlink (que es plenamente usable desde grub.conf, y de hecho, mucha gente utiliza para no tener que editar grub.conf cada vez que se instala un kernel, yo mismo lo hago en un servidor doméstico que tengo).

----------

## the incredible hurd

 *i92guboj wrote:*   

> 
> 
> No se si no he entendido algo bien, pero grub siempre ha funcionado bien con enlaces simbólicos.

 

 *GRUB Manual wrote:*   

> 
> 
> 2 : Bad file or directory type
> 
> This error is returned if a file requested is not a regular file, but something like a symbolic link, directory, or FIFO.
> ...

 

De GRUB Manual - Error messages reported by GRUB

Sencillamente prueba a hacer un symlink de tu splashimage y disfrutarás de un bonito menú en blanco y negro y en puro modo texto sin splash, desde /boot/grub/ a /boot/splash.xpm.gz por ejemplo.

Hablo por experiencia.

----------

## i92guboj

 *the incredible hurd wrote:*   

>  *i92guboj wrote:*   
> 
> No se si no he entendido algo bien, pero grub siempre ha funcionado bien con enlaces simbólicos. 
> 
>  *GRUB Manual wrote:*   
> ...

 

Mmm, ya veo. Gracias por la info. No suelo usar pantallas gráficas de inicio ni nada de eso. Quizás por eso jamás me di cuenta del detalle.

Sin embargo parece no tener ese problema al referenciar rutas o imágenes de kernel.

----------

## Thylzos

 *i92guboj wrote:*   

> En tiempo de arranque, grub te da las opciones para editar las rutas, edítalas, y prueba a borrar un pedacito y autocompletarlas con TAB, tal como harías en bash. De este mode podrás saber si las rutas están todas bien.

 

Lo probé, y es curioso el resultado, la dirección del kernel no la completa, incluso me sale un mensaje diciendo que no existe... pero luego lo comprobé desde mi debian, y sí está ahí. Te juro que esto me desconcierta.

----------

## i92guboj

 *Thylzos wrote:*   

>  *i92guboj wrote:*   En tiempo de arranque, grub te da las opciones para editar las rutas, edítalas, y prueba a borrar un pedacito y autocompletarlas con TAB, tal como harías en bash. De este mode podrás saber si las rutas están todas bien. 
> 
> Lo probé, y es curioso el resultado, la dirección del kernel no la completa, incluso me sale un mensaje diciendo que no existe... pero luego lo comprobé desde mi debian, y sí está ahí. Te juro que esto me desconcierta.

 

Si no la autocompleta es que no es correcta. Bórrala entera, empieza en otro disco, cambia cosas. Hasta que des con la ruta correcta.

Comprueba las líneas root. Ten en cuenta que dichas líneas no referencian la unidad root de linux, sino la raíz a partir de la cual buscar los kernels. De verdad tienes los kernels de debian en sda1, los y los de gentoo uno en sda6 y otro en sda9? Quizás estás confundiendo el root de grub con el root de linux, que no son lo mismo ni remotamente. (Lo siento si ésto salío ya antes en el hilo, no tengo tiempo de leerlo ahora y no lo recuerdo completo).Last edited by i92guboj on Tue Apr 22, 2008 2:46 pm; edited 1 time in total

----------

## Thylzos

 *i92guboj wrote:*   

>  *Thylzos wrote:*    *i92guboj wrote:*   En tiempo de arranque, grub te da las opciones para editar las rutas, edítalas, y prueba a borrar un pedacito y autocompletarlas con TAB, tal como harías en bash. De este mode podrás saber si las rutas están todas bien. 
> 
> Lo probé, y es curioso el resultado, la dirección del kernel no la completa, incluso me sale un mensaje diciendo que no existe... pero luego lo comprobé desde mi debian, y sí está ahí. Te juro que esto me desconcierta. 
> 
> Si no la autocompleta es que no es correcta. Bórrala entera, empieza en otro disco, cambia cosas. Hasta que des con la ruta correcta.

 

Es que copio la ruta desde otro sistema (Debia), la copio. No puede tener un error.

----------

## ekz

 *JuanSimpson wrote:*   

> no necesitas mil particiones boot, con una es suficiente, copia el kernel de gentoo a la que si funciona y añade la entrada correspondiente.
> 
> 

 

Prueba a hacer lo que dice JuanSimpsom ahí

```

title      Debian GNU/Linux, kernel 2.6.24-1-686

root      (hd0,0)

kernel      /boot/vmlinuz-2.6.24-1-686 root=/dev/sda1 ro

initrd      /boot/initrd.img-2.6.24-1-686

# This entry automatically added by the Debian installer for an existing

# linux installation on /dev/sda6.

title          Gentoo Linux 2.6.23-r8

root           (hd0,8)

kernel         /boot/kernel-genkernel-x86-2.6.24-gentoo-r4 root=/dev/ram0 ramdisk=8192 real_root=/dev/sda9 udev

initrd         /boot/initramfs-genkernel-x86-2.6.24-gentoo-r4 

```

Si tienes así tu grub.conf, copia la imagen del kernel a /boot de la partición sda1 (ahí donde tienes las de debian) y cambia root (hd0,8 ) a root (hd0,0) y manteniendo real_root=/dev/sda9 en la linea del kernel.

Saludos

----------

## Thylzos

¡Ha funcionado!, gracias a todos  :Razz: .

----------

