GNU GRUB FAQ

[ English | French | German ]



0. ¡Tengo algunas preguntas sobre GRUB!

Primero de todo, lee la documentación que acompaña la distribución de GRUB con el cuidado suficiente. Deberías ser capaz de obtener la mayoría de la información de ese documento. Esta FAQ sólo te da algunas pistas.

1. ¿En qué se diferencia GNU GRUB del GRUB original de Erich?

GNU GRUB es el sucesor del gran GRUB de Erich. El no podía trabajar en GRUB a causa de otras tareas, así que el mantenedor actual, Gordon Matzigkeit, se hizo cargo de él, y abrió el desarrollo para que todo el mundo pudiera participar.

Técnicamente hablando, GNU GRUB tiene muchas funcionalidades que no estaban el GRUB original. Por ejemplo, GNU GRUB puede ser instalado en un sistema operativo tipo UNIX (p.e. GNU/Linux) vía el shell grub (/sbin/grub), soporta el modo LBA (Logical Block Address) que resuelve el problema de los 1024 cilindros, y TAB completa un nombre de fichero cuando es único. Por supuesto, también se han arreglado muchos bugs, por tanto se recomienda usar GNU GRUB.

2. ¿Puede GRUB arrancar mi sistema operativo desde discos duros de más de 8GB?

Eso depende de tu BIOS y tu sistema operativo. Debes asegurarte de que tu unidad es accesible en modo LBA. Generalmente esto es configurable mediante la configuración de la BIOS. Lee el manual de tu BIOS para más información.

Además, algunos sistemas operativos (p.e. DOS) no pueden acceder a discos grandes, por tanto el problema no es resuelto por ningún tipo de gestor de arranque. Hasta donde yo se, al menos GNU/Hurd y GNU/Linux pueden arrancar desde estos discos.

3. ¿Puedo poner la etapa 2 (Stage2) en una partición más allá de 1024 cilindros?

Sí, puedes, si tu BIOS soporta modo LBA. Aunque en la versión anterior se debía usar una etapa 1 (Stage1) especial, ya no es necesario porque Stage1 ya soporta ambos modos.

4. ¿Cómo creo un disco de arranque GRUB con menú?

  1. Crea un sistema de ficheros en tu disco flexible ( mke2fs /dev/fd0).
  2. Monta el disco en algún lugar, por ejemplo, /mnt.
  3. Copia las imágenes de GRUB al directorio /mnt/boot/grub. Sólo stage1,stage2 y menu.lst son necesarios. No hace falta copiar *stage1_5.
  4. Desmonta el disco flexible.
  5. Ejecuta los siguientes comandos (ten en cuenta que el ejecutable grub puede estar en un directorio distinto en tu sistema, por ejemplo /usr/sbin):
    /sbin/grub --batch --device-map=/dev/null <<EOT
    device (fd0) /dev/fd0
    root (fd0)
    setup (fd0)
    quit
    EOT
    

5. ¿Cómo especifico una partición? Parece ser muy diferente de mi sistema operativo...

Sí, la sintaxis de dispositivos de GRUB es muy diferente, aunque recuerda ligeramente a DOS y Windows 98. GRUB no distingue entre IDE y SCSI, por tanto tus discos duros se representan como (hd%d) (%d es un entero, contando desde cero). Asimismo, tus unidades de disco flexible se representan como (fd%d).

Lo que más confunde a los usuarios es el estilo de numeración. GRUB cuenta las particiones desde cero, mientras que la mayoría de los sistemas operativos cuentan desde uno. Solucionaremos la inconsistencia algún día.

6. GRUB no reconoce mi partición GNU/Hurd.

No se por qué, pero los autores de FDISK han asignado el tipo de partición 0x63 a GNU Hurd incorrectamente. Por tanto usa 0x83 si la partición contiene un sistema de ficheros ext2 y usa 0xA5 si el sistema de ficheros es ffs, sea Hurd el propietario de la partición o no. Usaremos 0x63 para el sistema de ficheros GNU Hurd que todavía no ha sido implementado.

7. He instalado una versión reciente de binutils, pero GRUB todavía falla en el bootstrap.

Por favor, comprueba la versión de binutils con este comando:

$ ld -v
Esto mostrará dos versiones, pero sólo la última es importante. Si la versión es idéntica a la que has instalado, la instalación es correcta.

Entonces, intenta:

$ gcc -Wl,-v 2>&1 | grep "GNU ld"
Si esto no es idéntico al resultado de arriba, deberías especificar el directorio donde has instalado binutils al script configure, así:
$ ./configure --with-binutils=/usr/local/bin

Si sigues las instrucciones anteriores, pero GRUB todavía falla, probablemente hay un serio bug en GRUB. Por favor, informa de él al Bug Tracking System.

8. No puedo compilar GRUB en Red Hat 7.0.

¿Has visto este mensaje? Nunca damos soporte a versiones no liberadas de gcc.

9. ¿Cómo puedo especificar un tamaño arbitrario de memoria a Linux?

Pasa una opción mem= a tu kernel Linux, de esta manera:

grub> kernel /vmlinuz mem=128M

Puedes pasar otras opciones de la misma manera. Consulta la documentación de Linux para ver las opciones disponibles.

10. ¿Cómo arranco Windows (o DOS) desde un disco que no sea el primero?

Usa la orden map, para intercambiar las unidades de la BIOS virtualmente, así:

grub> map (hd0) (hd1)
grub> map (hd1) (hd0)

11. Tengo una partición boot separada en GNU/Linux (u otro sistema tipo UNIX), y GRUB parece no manejar correctamente esta situación.

Esto es a menudo considerado un bug, pero en realidad no lo es. Es una funcionalidad.

GRUB es un gestor de arranque y normalmente no se ejecuta bajo ningún sistema operativo, por tanto no sabe donde está montada una partición bajo tu sistema. Por tanto, si tienes una partición /boot e instalas las imágenes de GRUB en el directorio /boot/grub, GRUB encuentra las imágenes en el directorio /grub pero no en /boot/grub. Esto es correcto, ya que no hay garantía de que todos los sistemas operativos monten la misma partición como /boot.

Hay varias soluciones a esta situación.

  1. Instalar GRUB en el directorio /boot/boot/grub en lugar de en /boot/grub. Puede parecer feo, pero funciona bien.
  2. Crear un enlace simbólico antes de instalar GRUB, por ejemplo cd /boot && ln -s . boot. Esto funciona sólo si el sistema de ficheros de la partición boot soporta enlaces simbólicos y GRUB soporta esta funcionalidad.
  3. Instalar GRUB con la orden install, para especificar las trayectorias de las imágenes explicitamente. Por ejemplo:
          grub> root (hd0,1)
          grub> install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst
          

12. ¿Cómo desinstalar GRUB de mi unidad de disco duro?

No existe el concepto de desinstalar en los gestores de arranque, porque si desinstalas un gestor de arranque, sólo queda una máquina inarrancable. Por tanto, todo lo que tienes que hacer es sobreescribirlo con otro gestor de arranque, es decir, instalar otro gestor de arranque sin desinstalar GRUB.

Por ejemplo, si quieres instalar el gestor de arranque para Windows, simplemente ejecuta FDISK /MBR en Windows. Si quieres instalar LILO (no puedo imaginar por qué querrías hacer una cosa así), ejecuta /sbin/lilo desde GNU/Linux.

13. GRUB se cuelga accediendo a mi disco IDE grande.

Si tu disco es mayor de 32 GB probablemente actualizar la BIOS de tu placa base solucionará el problema. Este bug es bien conocido y la mayoría de proveedores deberían ofrecerte versiones corregidas. Por ejemplo, si tienes ASUS-P3BF, actualizando la BIOS a V1007beta1 o posterior puede arreglarlo. Por favor, consulta con el vendedor de tu placa para más información.

14. GRUB se cuelga accediendo a mi disco SCSI.

Comprueba si has activado el soporte para la extensión INT 13 (LBA). En este caso, desactívalo y comprueba si GRUB puede acceder ahora a tu disco SCSI. Esto dejará claro que tu BIOS SCSI apesta.

Por ahora, sabemos que las siguientes controladoras SCSI no ofrecen un modo LBA que funcione:

En el desafortunado caso de que tengas alguna de estas controladoras SCSI, no puedes usar el modo LBA, aunque GRUB todavía funcionará correctamente con el modo CHS (y por tanto el conocido problema de los 1024 cilindros vuelve de nuevo).

15. He instalado GRUB, pero simplemente se cuelga.

Hay muchas posibilidades, pero es probable que haya algo mal en el fichero de mapa de dispositivos. Echale una ojeada al fichero /boot/grub/device.map. El formato está bien documentado en el manual.

Si hay algo incorrecto, modifica el fichero y vuelve a ejecutar grub-install.

Si todavía tienes problemas o no sabes cómo debes modificarlo, será más sencillo instalar GRUB con un disco de arranque en lugar de con grub-install.

16. ¿Por qué Linux (FreeBSD, NetBSD, etc.) no son compatibles con Multiboot?

Por favor, pregunta a sus respectivos mantenedores.. Si todos los kernels libres fueran compatibles con Multiboot, el mundo sería una utopía...


[ English | French | German ]

Traducción por Isaac Clerencia