GRUB2 a fondo

Bien, ya hace algún tiempo que tengo el blog activo y por lo que he visto una de las entradas que ha tenido mas éxito ha sido la entrada de como recuperar el grub2.

Así que espero que os haya sido útil a los que habeis seguido las indiciaciones de esta misma entrada.

Pero por lo que he podido ver esta entrada se quedó un poco corta en cuanto a explicar las características de este nuevo gestor de arranque; y digo nuevo porque no tenemos que olvidar que GRUB2 ha sido escrito totalmente desde cero, es decir, que lo único que ha heredado de grub-legacy es el nombre.

Vale, en esta entrada voy a explicar como instalar el grub2 desde cero, sin grub-legacy previamente instalado y también como funcionan los ficheros de configuración y los scripts que usa el programa para configurarse.
Como que en mi equipo ya tengo el grub2 instalado, empezaremos desinstalándolo para empezar desde el principio.

sudo aptitude purge grub2 grub-common grub-pc grub2-splashimages

Con esto lo que haremos será eliminar totalmente el grub, incluso del MBR tal y como nos advierte un cuadro de diálogo al desinstalar. Pongo como desinstalarlo, porque tal y como veremos a continuación el paquete “grub2” es un metapaquete, por lo que si solamente desinstalamos este, nos encontraremos con que no lo hace correctamente.

Ahora procedemos a la instalación:

sudo aptitude install grub2 grub2-splashimages os-prober

Tal y como podemos ver, este comando nos instala el grub-common, os-prober y el grub-pc.

Esto nos ha instalado el grub2 en nuestro equipo, notemos que nos ha pedido las opciones a pasarle al kernel, entre ellas está el quiet y splash.

Veamos que hacen:

El quiet lo que hace es agrupar los mensajes del kernel durante el arranque, así queda mas ordenada la salida por pantalla.

El splash pone una barra de progreso gráfica durante el arranque, ocultando los mensajes de arranque del kernel.

Yo tengo estas dos opciones desactivadas, de esta forma cuando hay una modificación del grub.cgf, ya sea por una actualización del kernel o de los ficheros de configuración del grub, no tengo que quitar esta linea a mano cada vez. Si querías hacer esto pero no lo hiciste al instalar el grub, no te preocupes, siempre puedes reconfigurar el paquete instalado de la siguiente forma:

sudo dpkg-reconfigure grub-pc -phigh

Continuemos; como ya expliqué en mi primer artículo, el fichero de configuración del grub2, a diferencia del grub-legacy, ya no es el menu.lst, si no que actualmente es el fichero grub.cfg.

Este fichero lo podemos encontrar en /boot/grub/grub.cfg, pero tenemos que tener clara una cosa, este fichero no tiene que editarse a mano, si nos vemos obligados a editarlo a mano, es que probablemente estamos haciendo algo mal.

Y bien, si no se edita, ¿como se configuran las entradas del grub.cfg?

Bueno, antes de responder a esta pregunta miraremos el fichero donde estan las opciones de configuración mas globales del grub. Este fichero lo podemos encontrar en /etc/default/grub , así que vamos a editarlo y nos encontraremos con las siguientes opciones:

GRUB_DEFAULT= 0/saved, con la opción 0 hacemos que se seleccione por defcto la primera entrada, con la opción 1, la segunda, y así succesivamente. Con la opción saved, hacemos que siempre seleccione la última entrada que se ejecutó.
GRUB_TIMEOUT=10, le ponemos el tiempo de espera hasta ejecutar la entrada que tenemos puesta como default.
GRUB_HIDDEN_TIMEOUT=0, esconde el menú de entradas del grub, si le ponemos un tiempo mas alto lo que hace es esconder el menú, pero esperarse un tiempo hasta continuar. Para hacerlo visible tenemos que comentar la linea y que queda de la siguiente manera
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_MENU_QUIET=true/false, si está a “true” esconode la cuenta atrás, mientras que si está a “false” muestra la cuenta atrás.
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian , determina el nombre de la entrada del menú.
GRUB_CMDLINE_LINUX=”opciones”, similar al altoptions del antiguo grub.
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” , como vemos, otra forma de configurar las opciones sin reconfigurar el paquete.

Las otras opciones vienen comentadas en el mismo fichero de configuración, pero la que mas me interesa es la siguiente

#GRUB_GFXMODE=640×480

Bien, esto activa el grub gráfico, yo actualmente lo tengo de la siguiente forma:

GRUB_GFXMODE=1024×768

Ahora sigamos, ya hemos visto como modificar las características generales de nuestro nuevo grub2, pero vayamos a los scripts …

El directorio de estos, como lo habitual en las distribuciones debian based, es el siguiente /etc/grub.d/

Aquí dentro podemos encontrar las siguientes carpetas:

  • 00_header: Lo que hace es cargar las configuraciones del fichero /etc/default/grub.
  • 05_debian_theme: Configura el fondo, texto, colores y temas.
  • 10_hurd: Para kernels hurd.
  • 10_linux: Para kernels basados en la distribución, los determina un lsb_release -i -s
  • 20_memtest86+: Si el fichero /boot/memtest86+.bin existe lo introduce en la lista de entradas.
  • 30_os-prober: Busca otros kernels y los introduce en el fichero de configuración
  • 40_custom: Muy importante, cuando un kernel de otro S.O. no es detectado por el os-prober, podemos instroducirlo en este script, así se generará la entrada en el fichero grub.cfg.

Bien, ahora voy a mostrar un grub2 configurado tal y como lo tengo yo.empezamos por el /etc/default/grub

# If you change this file, run ‘update-grub’ afterwards to update
# /boot/grub/grub.cfg.
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=””
GRUB_CMDLINE_LINUX=””

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo’
GRUB_GFXMODE=1024×768

# Uncomment if you don’t want GRUB to pass “root=UUID=xxx” parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY=”true”

Ahora sigamos por el /etc/grub.d/40_custom:

menuentry SysrescueCD {
set root=(hd0,10)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *