GRUB2: Una pequeña introducción | Algo de Linux

domingo, 12 de febrero de 2012

GRUB2: Una pequeña introducción

Hasta ahora, si queríamos modificar las opciones de arranque de GRUB o añadir nuevas entradas (por ejemplo para arrancar un Windows instalado después de Linux), hacíamos todas las modificaciones en el fichero /boot/grub/menu.lst. Ésto es algo que ha cambiado en GRUB 2, y, a lo que por tanto, tendremos que adaptarnos.

Para empezar, el fichero donde reside la configuración de GRUB 2, sigue residiendo en /boot/grub/ pero ya no se llama menu.lst sino grub.cfg.
Este fichero no debemos editarlo porque es generado automáticamente por grub-mkconfig y todos los cambios que hagamos en él se perderán tarde o temprano.

GRUB 2 tiene sus ficheros de configuración en los siguientes lugares:
  • /etc/default/grub
  • /etc/grub.d/
  • /boot/grub/grub.cfg
 El fichero /etc/default/grub contiene los ajustes, como por ejemplo, la entrada por defecto, el tiempo de espera antes de cargar dicha entrada, etc...

El directorio /etc/grub.d/ contiene un conjunto de scripts. Cada uno de estos scripts forman los bloques con los que será construido el fichero /boot/grub/grub.cfg. Si nos fijamos en los ficheros de este directorio, veremos que comienzan por un número. Ese número va a determinar el orden en que los scripts van a ser leídos a la hora de crear el fichero grub.cfg.

El fichero /boot/grub/grub.cfg es el principal fichero de configuración de grub. Como ya hemos dicho, grub.cfg reemplaza a menu.lst. Pero, a diferencia de menu.lst, grub.cfg no puede ser editado a mano. Mejor dicho, sí puede ser editado, pero no se debe, porque cuando se haga por ejemplo, alguna actualización del kernel, lo que hayamos modificado se perderá.

A continuación muestro el conjunto de scripts de grub que tiene mi equipo en /etc/grub.d/

administrador:/root# ls -l /etc/grub.d/
total 64
-rwxr-xr-x 1 root root 6491 may 22  2011 00_header
-rwxr-xr-x 1 root root 1150 oct 13  2009 05_debian_theme
-rwxr-xr-x 1 root root 5343 ene 17  2011 05_debian_theme.dpkg-dist
-rwxr-xr-x 1 root root 4284 ene 18  2011 10_linux
-rwxr-xr-x 1 root root  296 mar  1  2009 20_memtest86
-rwxr-xr-x 1 root root 1570 jun 27  2010 20_memtest86+
-rwxr-xr-x 1 root root 5789 ago 23  2010 30_os-prober
-rwxr-xr-x 1 root root  214 sep 12  2009 40_custom
-rwxr-xr-x 1 root root   95 ago 23  2010 41_custom
-rw-r--r-- 1 root root  483 ago 10  2009 README


Hace poco, algún compañero que ha utilizado la imagen de una Debian Squeeze que compartí, me ha comentado que la ha utilizado para clonar particiones en equipos duales Linux/Windows  y me preguntaba cómo podía modificar grub para que mostrase una opción que ofreciese la posibilidad de arrancar el windows que tenía instalado en otra partición. Veamos cómo hacerlo.

Imaginemos que tenemos un directorio /etc/grub.d como el que muestro en el listado anterior y queremos añadir una entrada que arranque un Windows que tenemos instalado en la partición 5.

Para añadir una nueva opción de arranque, tendremos que crear un nuevo fichero en /etc/grub.d que comience por un número. Si queremos que la entrada aparezca después de otra, deberemos darle un número mayor. Por ejemplo, si queremos añadir una entrada para el windows del que estamos hablando y que se muestre después de linux, como la entrada de linux comienza por 10 (10_linux), para cargar windows creamos un fichero que comience, por ejemplo por 11 (11_windows).

administrador:/root# nano /etc/grub.d/11_windows 
#!/bin/sh -e
echo "Añadiendo Windows 7 al menu de GRUB 2"
cat << EOF
menuentry "Windows 7" {
set root=(hd0,5)
chainloader (hd0,5)+1
}
EOF


Importante: GRUB 2 usa una notación para las particiones que comienza desde 1 en lugar de 0 como sucedía en la versión anterior de GRUB.

Una vez creado el script, le damos permisos de ejecución:

# chmod +x /etc/grub.d/11_windows  

Y por último, ejecutamos update-grub para regenerar el fichero /boot/grub/grub.cfg.

# update-grub 

No hay comentarios: