El gestor de arranque grub

GRUB (GRand Unifier Bootloader) es un gestor de arranque: es lo primero que se carga cuando se inicia la computadora. Permite tener diferentes sistemas operativos, y diferentes versiones de ellos, en el mismo disco duro. Por ejemplo podemos tener Windows y GNU/Linux en la misma computadora, GRUB se cargará antes que cualquiera de éstos permitiéndonos elegir cuál iniciar.

El gestor de arranque GRUB viene preinstalado en la mayoría de las distribuciones de GNU/Linux modernas, entre ellas Debian, Ubuntu y sus derivadas. Anteriormente, el gestor de arranque más usado era LILO.

A partir de la versión 9.10 de Ubuntu se utiliza la versión 2 de GRUB (GRUB2) como gestor de arranque por defecto en Ubuntu, así que será esta versión la que veamos.

Cuando se ejecuta Grub al iniciar el arranque lee su configuración del fichero /boot/grub/grub.cfg, pero si queremos modificar el comportamiento de Grub no debemos modificar dicho fichero directamente, ya que este se genera automáticamente a partir de otros ficheros de configuración al ejecutar:

# update-grub

Este comando se ejecuta automáticamente, por ejemplo cada vez que se actualiza el Kernel del sistema. Después de instalarse el nuevo Kernel se crea una entrada para el mismo en el menú.

/boot/grub/grub.cfg toma su configuración al leer update-grub el contenido de los siguientes archivos y directorios:

Fichero /etc/default/grub

Algunos de los parámetros que podemos tener en este fichero son:

  • GRUB_DEFAULT= 0/saved: Permite seleccionar la opción por defecto del menú que se iniciará si no movemos el cursor para cambiarla.
    • Con la opción 0 hacemos que se seleccione por defecto 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 si no hemos pulsado ninguna tecla.
  • 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 (escribir # al principio) la linea y que queda de la siguiente manera #GRUB_HIDDEN_TIMEOUT=0
  • GRUB_HIDDEN_MENU_QUIET=true/false, si está a “true” oculta la cuenta atrás, mientras que si está a “false” muestra la cuenta atrás.
  • #GRUB_DISABLE_LINUX_RECOVERY=“true” Descomenta esta línea para que no aparezca la opción de recovery mode en el menú

Contenido del directorio /etc/grub.d

Dentro de este directorio se encuentran los ficheros encargados de detectar los sistemas operativos instalados en nuestro equipo y de generar las entradas correspondientes en grub.cfg cuando se ejecuta update-grub. Aparte de los sistemas operativos también se generan entradas para otros aspectos como el chequeo de la memoria del sistema, rescate del sistema, etc.

Los ficheros que suelen aparecer y que no deberíamos tocar a no se que quisieramos personalizar especialmente el menú de Grub son:

  • 00_header
  • 05_debian_theme
  • 10_hurd
  • 10_linux
  • 20_memtest86+
  • 30_os-prober
  • 40_custom

Tienes una descripción más detallada de cada uno de dichos archivos en el siguiente enlace en la documentación oficial de Ubuntu.