Manual de instrucciones de GRUB

Índice

1. Introducción
2. Algunos consejos y datos iniciales
3. Parámetros básicos
4. Poner una imagen en GRUB
5. Seguridad


1. Introducción

Una de las mayores fuentes de dudas y problemas para los recién llegados a GNU/Linux es GRUB (GRand Unified Bootloader). GRUB es un gestor de arranque que nos permite seleccionar el sistema operativo que queremos cargar. El menú del GRUB aparece cada vez que encendamos/reiniciemos nuestro ordenador. Hay otros gestores de arranque además de GRUB, como por ejemplo, LILO (LInux LOader).

2. Algunos consejos y datos iniciales

Durante la instalación de tu sistema GNU/Linux, seguramente tendrás la oportunidad de instalar un gestor de arranque y además podrás elegir dónde instalarlo. Lo normal es instalarlo en (hd0,0). Si teneis pensado instalar Windows y una distribución GNU/Linux en el mismo ordenador, instalad primero Windows y luego la distribución GNU/Linux, porque si lo haceis al revés, la instalación de Windows eliminará GRUB porque sobreescribirá el MBR (Master Boot Record) y no podrás entrar en tu sistema GNU/Linux hasta que no recuperes GRUB.

Si no al arrancar el ordenador no te carga bien GRUB, asegúrate de que en la BIOS esté seleccionada la opción que diga algo así como "Autodetectar discos duros". Esto suele corregir algunos problemas.

Si necesitais recuperar o reinstalar GRUB por cualquier motivo, podeis consultar el proyecto Super Grub Disk.

3. Parámetros básicos

Bueno..., vamos a poner a punto GRUB... El archivo de configuración que tenemos que editar como root es /boot/grub/menu.lst.

Por cada uno de los sistemas operativos que tengamos en GRUB, aparecerá un bloque parecido a este:

title  Debian GNU/Linux, kernel 2.6.22-2-686
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.22-2-686 root=/dev/sda1 ro
initrd  /boot/initrd.img-2.6.22-2-686
savedefault

La línea "title" es lo que nosotros veremos en la pantalla cuando se cargue GRUB (puedes cambiar el texto). En la línea "root" se indica el disco duro y la partición en la que se encuentra el sistema operativo en cuestión: (hd0,0) es la primera partición del primer disco duro, (hd1,2) sería la tercera partición del segundo disco duro, (hd3,1) sería la segunda partición del cuarto dico duro... Para saber en qué disco duro/partición tenemos cada sistema operativo, sólo tenemos que teclear en un terminal como root (lo que hay detrás del guión es una "ele"):

fdisk -l

Ahora llega la parte difícil, porque la salida de este comando muestra particiones con una nomenclatura algo diferente a la utilizada por GRUB... En la salida de este comando veremos algo como /dev/hda1 (o/dev/sda1 si el disco es SATA). Ahora, la letra "a" indica que es el primer disco duro, y el 1, que es la primera partición, /dev/hdb3 (o /dev/sdb3) sería la tercera partición del segundo disco duro, /dev/hdc2 (o /dev/sdc2) sería la segunda partición del tercer disco duro,... Algunas equivalencias entre el "formato GRUB" y el "formato fdisk":

(hd0,0) --> hda1 (o sda1)
(hd1,2) --> hdb3 (o sdb3)
(hd3,1) --> hdd2 (o sdd2)

El bloque necesario para el sistema operativo Windows, podría tener un aspecto similar a este:

title  Microsoft Windows XP Professional
root  (hd0,0)
savedefault
makeactive
chainloader +1

Para seleccionar el sistema operativo que quieres que arranque por defecto, localiza la línea que cominza con la palabra "default". El número que aparece en esta línea indica que, por defecto, se cargará el primer sistema operativo que aparezca en el archivo /boot/grub/menu.lst que estamos editando. Ten en cuenta que esto...:

title  Other operating systems:
root

...también se cuenta. Veamos un ejemplo. Imaginemos que tenemos un /boot/grub/menu.lst como el que se muestra a continuación y queremos que Windows sea nuestra opción de arranque por defecto (mala elección ;)). Entonces, tendremos que poner "default 2" porque el 0 sería Debian, el 1 la línea de "Other operating systems" y el 2, Windows.

title  Debian GNU/Linux, kernel 2.6.22-2-686
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.22-2-686 root=/dev/sda1 ro
initrd  /boot/initrd.img-2.6.22-2-686
savedefault

title  Other operating systems:
root

title  Microsoft Windows XP Professional
root  (hd0,0)
savedefault
makeactive
chainloader +1

Otro parámetro interesante es el que se controla con la línea que comienza con "timeout". El número que aparece en esta línea, indica el tiempo en segundos que permanecerá la pantalla de GRUB hasta que se comience a cargar el sistema operativo por defecto, o hasta que pulsemos una tecla para seleccionar otro.

También aparece una línea comentada (las líneas comentadas son las que comienzan con "#" y esas, no son tenidas en cuenta a la hora de interpretar el archivo) que dice "hiddenmenu". Si descomentamos esa línea (quitamos "#") lo que haremos será ocultar la pantalla de GRUB. El sistema operativo por defecto se arrancará después de los segundos indicados en "timeout". Si queremos elegir otro, tendremos que pulsar ESC para ver la pantalla del menú.

Luego hay otra línea como esta:

# howmany=all

Esto quieres decir que en el menú se mostrarán las entradas de todos los kernel que tengamos instalados. Si quereis limitar el número de kernel mostrados, tenemos que sustituir "all" por el número que queramos. NO hay que descomentar la línea...

4. Poner una imagen en GRUB

Vamos a por más cosas... Si quereis poner una imagen en GRUB teneis que tener en cuenta que la imagen utilizada sólo tiene que tener 14 colores, una resolución de 640x480 y debe tener formato .xpm y estar comprimida con extensión .gz; es decir, que la imagen se llamará loquesea.xpm.gz.

La línea que deberíamos introducir en /boot/grub/menu.lst sería ésta:

splashimage=(hd0,1)/boot/grub/imagenes/loquesea.xpm.gz

Siendo (hd0,1) el disco duro y la partición en la que tengamos la raíz de nuestro sistema ("/") y /boot/grub/imagenes/loquesea.xpm.gz es la ruta completa de la imagen que queremos que salga de fondo en el menú de GRUB. Aquí teneis una explicación más detallada de cómo hacerlo. Puedes bajar imágenes para GRUB de muchas páginas en Internet, como gnome-look.org o kde-look.org.

5. Seguridad

Si queremos evitar que se pueda editar de forma interactiva (es decir, desde la propia pantalla del menú de GRUB en ejecución) el menu de GRUB, podemos protegerlo con contraseña (hasta que no pulsemos la tecla "p" y metamos la contraseña no nos dejará editarlo. Para ditar, se pulsa le tecla "e"). Por tanto, la contraseña no se pide para arrancar cualquiera de nuestros sistemas operativos, sino para editar GRUB.

Para hacerlo, vamos a una consola, nos validamos como root, tecleamos:

grub

Aparecerá un prompt como este:

grub>

Después escribimos:

md5crypt

Escribimos la contraseña que queramos, y nos la devolverá cifrada (MD5). Por ejemplo:

$1$gLhU0/$aW78kHK1QfV3P2b2znUoe/

Salimos escribiendo

quit

En resumen:

grub
grub> md5crypt
Password: ********
Encrypted: $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
grub> quit

Ahora vamos a /boot/grub/menu.lst, descomentamos la línea que dice:

password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/

Y sustituimos el "churro" que hay tras "--md5" por nuestra contraseña cifrada. La contraseña la hemos encriptado para que si alguien abre este archivo, no vea la clave escrita, pero cuando se pida introducir la clave al arrancar un sistema operativo, evidentemente, tienes que escribirla en texto plano, no encriptada (sería imposible de recordar...) .

Si además de la contraseña global, debajo de la línea "title" de cada uno de nuestros sistemas operativos ponemos:

lock

entonces, NO se podrá arrancar el sistema operativo hasta que no pulsemos "p" y tecleemos la contraseña que hemos puesto (sería la misma para todos los sistemas operativos porque la contraseña que hemos puesto es global).

Ejemplo:

password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/

title  Debian GNU/Linux, kernel 2.6.22-2-686
lock
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.22-2-686 root=/dev/sda1 ro
initrd  /boot/initrd.img-2.6.22-2-686
savedefault

title  Other operating systems:
root

title  Microsoft Windows XP Professional
lock
root  (hd0,0)
savedefault
makeactive
chainloader +1

Si en vez de utilizar lock, y una contraseña global, utilizásemos password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/ (pero con tu contraseña, claro) debajo de la línea "title" de los sistemas operativos, podríamos poner una contraseña diferente para cada uno de ellos. En este caso no tendremos que pulsar "p" para después introducir la contraseña, sino que nos pedirá la contraseña directamente cuando tratemos de arrancar el sistema. Para obtenerlas encriptadas, hacemos lo mismo que antes.

Ejemplo:

title  Debian GNU/Linux, kernel 2.6.22-2-686
password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.22-2-686 root=/dev/sda1 ro
initrd  /boot/initrd.img-2.6.22-2-686
savedefault

title  Other operating systems:
root

title  Microsoft Windows XP Professional
password --md5 $1$dOCJC$sqc5iGr80taHbTYD7eSOd1
root  (hd0,0)
savedefault
makeactive
chainloader +1

Si quitas "--md5", pudes utilizar tu constraseña escribiéndola sin encriptar:

password tucontraseña

Ejemplo:

title  Debian GNU/Linux, kernel 2.6.22-2-686
password tucontraseña
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.22-2-686 root=/dev/sda1 ro
initrd  /boot/initrd.img-2.6.22-2-686
savedefault

Para saber más de GRUB, podeis consultar este completo manual.

Me ha quedado un poco largo... Cualquier corrección, ampliación o comentario será bien recibido. Espero que ayude a alguien...

Sensacional manual, Stalker.
Hace 1 año que en un portatil funciono con el Super Grub Disk, cuando tenga algo de tiempo me pondré a arreglar el Grub a ver si lo soluciono de una vez.
Gracias.

Capsule2 escribió:

Sensacional manual, Stalker.
Hace 1 año que en un portatil funciono con el Super Grub Disk, cuando tenga algo de tiempo me pondré a arreglar el Grub a ver si lo soluciono de una vez.
Gracias.

Muchas gracias Capsule2 wink

Es un placer leer manuales tan claros y detallados. Gracias.

Un buen manual, pero no sé si habría que modificar lo de añadir una imagen al arranque GRUB, dado que con el Administrador de Arranque ya no hace falta editar el menu.lst. Simplemente desde este administrador, lo podemos hacer todo cómodamente, yo lo he probado y me ha ido de maravilla. Creo que para los que somos menos experimentados, pues no viene bien.

También decir que desde este administrador, en sus distintas pestañas, se pueden hacer la mayoría de las cosas que pone en el manual.

Salu2.-

Gracias por el aporte!

Sí la verdad es que es mucho más fácil así. Cada vez se pueden hacer más cosas de forma gráfica, que es más sencillo y por tanto más difícil cometer errores...

Existe otro editor llamado QGRUBEditor este se puede encontrar en la lista de agregar/quitar programas y la verdad es que además de poder configurarlo visualmente tiene muchas mas opciones lo unico es que esta en ingles y la traducción a español todavía no existe

Si señor... no hay mucha mas por hablar sobre el tema. espectacular y esta tan simple que mi abuelo lo puede entender!!!

junto al aporte de como "dejarlo mas lindo"...

excelente aporte!!!

Hola a tod@s, excelente manual, ¿alguien sabe si es posible añadir en el Grub una entrada para cada versión de Windows?. Yo tengo XP en la primera partición, Vista en la 2ª, y Ubuntu en la 3ª , pero en Grub solo tengo una entrada al menu de arranque de vista con las dos opciones de XP o Vista, pero me gustaria saltarme el menú de vista y poder arrancar cualquier windows directamente desde Grub? agradecería cualquier ayuda.

Basandome en el manual he editado menu.lst añadiendo:

title Windows XP Profesional
root (hd0,0)
savedefault
makeactive
chainloader +1

title Windows Vista Ultimate
root (hd0,1)
savedefault
makeactive
chainloader +1

title Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,5)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=fa1c0438-2cad-488f-8812-c0f07ce828b5 ro quiet splash locale=es_ES
initrd /boot/initrd.img-2.6.22-14-generic
quiet

pero no funciona, creo que falta algo, agradecería cualquier ayuda.
Salu2

maikelbus escribió:

Hola a tod@s, excelente manual, ¿alguien sabe si es posible añadir en el Grub una entrada para cada versión de Windows?. Yo tengo XP en la primera partición, Vista en la 2ª, y Ubuntu en la 3ª , pero en Grub solo tengo una entrada al menu de arranque de vista con las dos opciones de XP o Vista, pero me gustaria saltarme el menú de vista y poder arrancar cualquier windows directamente desde Grub? agradecería cualquier ayuda.

Basandome en el manual he editado menu.lst añadiendo:

title Windows XP Profesional
root (hd0,0)
savedefault
makeactive
chainloader +1

title Windows Vista Ultimate
root (hd0,1)
savedefault
makeactive
chainloader +1

title Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,5)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=fa1c0438-2cad-488f-8812-c0f07ce828b5 ro quiet splash locale=es_ES
initrd /boot/initrd.img-2.6.22-14-generic
quiet

pero no funciona, creo que falta algo, agradecería cualquier ayuda.
Salu2

Pues ahí me pillas en fuera de juego... lol
Nunca he tenido Win Vista y por tanto, nunca me he enfrentado a ese problema. Desconozco el sitema de arranca de Vista.

De todas formas, es posible que influya el orden de instalación de los Sistemas Operativos. El último, siempre GNU/Linux, para que el GRUB sea el gestor de arranque y pise a los anteriores, y no sé si influirá en qué orden instalas XP y Vista...

Siento no poder ser de ayuda...