Personalizar el menú de arranque de GRUB2 en Linux

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a personalizar el menú de arranque de GRUB2 en un entorno Linux. GRUB2 (GRand Unified Bootloader) es el primer programa que se ejecuta al iniciar el equipo y es el responsable de cargar el kernel de Linux. Obtendrás experiencia práctica trabajando con su archivo de configuración principal, /etc/default/grub, para ajustar la experiencia de inicio según tus necesidades.

Comenzarás accediendo e inspeccionando la configuración predeterminada de GRUB2. A continuación, modificarás parámetros clave como GRUB_TIMEOUT para cambiar el tiempo que se muestra el menú de arranque y GRUB_DEFAULT para establecer la entrada de arranque predeterminada. Para concluir el laboratorio, aplicarás estos cambios generando un nuevo archivo de configuración de GRUB2 con el comando grub2-mkconfig y aprenderás a verificar que tus personalizaciones estén configuradas correctamente.

Nota: Dado que este es un entorno virtual de LabEx temporal y desechable, no podemos realizar un reinicio real del sistema para ver los cambios en el menú de arranque. En su lugar, aprenderás a verificar los cambios de configuración examinando los archivos de GRUB2 generados, lo cual es una habilidad igualmente importante para que los administradores de sistemas validen sus configuraciones antes de reiniciar sistemas en producción.

Acceder al archivo de configuración predeterminado de GRUB2 /etc/default/grub

En este paso, aprenderás a acceder y visualizar el archivo de configuración principal de GRUB2. GRUB2 (GRand Unified Bootloader, versión 2) es el gestor de arranque predeterminado para la mayoría de las distribuciones de Linux modernas. Es el primer programa que se ejecuta al iniciar el equipo y su función es cargar el kernel de Linux en la memoria para luego iniciar el sistema operativo.

El archivo de configuración principal con el que trabajarás para personalizar el comportamiento de GRUB2 se encuentra en /etc/default/grub. Este archivo contiene pares clave-valor que controlan ajustes como el tiempo de espera del menú de arranque, el sistema operativo predeterminado y parámetros adicionales del kernel.

Antes de realizar cualquier cambio, es fundamental inspeccionar la configuración actual. Dado que /etc/default/grub es un archivo del sistema propiedad del usuario root, debes usar el comando sudo para acceder a él. Utilizaremos el comando cat para mostrar su contenido en la terminal.

Ejecuta el siguiente comando para ver el contenido del archivo de configuración predeterminado de GRUB2:

sudo cat /etc/default/grub

Para mantener una referencia sencilla que puedas comparar más adelante en el laboratorio, guarda los ajustes actuales de tiempo de espera y entrada predeterminada en un archivo en tu directorio personal:

sudo grep -E "^(GRUB_TIMEOUT|GRUB_DEFAULT)" /etc/default/grub | tee ~/grub-current-settings.txt >/dev/null

Verás una salida similar a la siguiente. Los valores exactos pueden variar ligeramente según la configuración de tu sistema.

GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rhgb quiet net.ifnames=0 console=tty0 console=ttyS0,115200n8 no_timer_check iommu=pt crash_kexec_post_notifiers=1 nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

Analicemos brevemente dos parámetros importantes de este archivo:

  • GRUB_TIMEOUT: Este valor determina cuánto tiempo (en segundos) se muestra el menú de GRUB2 antes de iniciar automáticamente la entrada predeterminada.
  • GRUB_DEFAULT: Especifica qué sistema operativo o kernel se iniciará de forma predeterminada.

En el siguiente paso, aprenderás a modificar estos parámetros para cambiar el comportamiento del menú de arranque.

Modificar los parámetros GRUB_TIMEOUT y GRUB_DEFAULT

En este paso, modificarás el archivo de configuración de GRUB2 para cambiar el comportamiento del menú de arranque. Específicamente, aumentarás el tiempo de espera del menú y establecerás una entrada de arranque predeterminada específica. Para editar el archivo /etc/default/grub, usarás nano, un editor de texto de línea de comandos sencillo e intuitivo. Como se trata de un archivo del sistema, debes usar sudo para obtener los permisos necesarios para editarlo.

Primero, abre el archivo usando nano con privilegios de sudo.

sudo nano /etc/default/grub

El editor nano se abrirá y mostrará el contenido del archivo. Ahora, realizarás dos cambios:

  1. Cambiar el valor de GRUB_TIMEOUT: Localiza la línea que comienza con GRUB_TIMEOUT. Es probable que esté establecida en 1. Usa las teclas de flecha para mover el cursor a esta línea y cambia el valor de 1 a 15. Esto hará que el menú de GRUB2 espere 15 segundos antes de iniciar automáticamente.

    La línea debería verse así después del cambio:

    GRUB_TIMEOUT=15
    
  2. Cambiar el parámetro GRUB_DEFAULT: Busca la línea que comienza con GRUB_DEFAULT. Su valor podría ser saved. Cambia este valor a 0. Establecer GRUB_DEFAULT=0 le indica a GRUB2 que inicie automáticamente la primera entrada de la lista del menú (la lista utiliza indexación basada en cero, por lo que 0 es la primera entrada).

    La línea debería verse así después del cambio:

    GRUB_DEFAULT=0
    

Una vez realizados estos cambios, debes guardar el archivo y salir de nano.

  • Presiona Ctrl + O (el comando "Write Out") para guardar los cambios.
  • nano te pedirá confirmar el nombre del archivo a escribir. Simplemente presiona Enter.
  • Presiona Ctrl + X para salir del editor nano y volver al prompt de tu shell.

Ahora has modificado con éxito los ajustes predeterminados de GRUB2. En el siguiente paso, aplicarás estos cambios.

Aplicar y verificar los cambios de configuración de GRUB2

En este paso, aplicarás los cambios de configuración que realizaste en el paso anterior y aprenderás a verificar que GRUB2 se haya configurado correctamente. Utilizarás el comando grub2-mkconfig para generar un nuevo archivo de configuración basado en tus modificaciones.

Generar la nueva configuración de GRUB2

Ahora que has modificado el archivo /etc/default/grub, debes aplicar estos cambios generando un nuevo archivo de configuración de GRUB2. El comando grub2-mkconfig lee los ajustes de /etc/default/grub y los scripts en /etc/grub.d/ para crear la configuración final de GRUB2.

Ejecuta el siguiente comando para generar la nueva configuración:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Deberías ver una salida similar a esta:

Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done

Este comando escanea tu sistema en busca de kernels disponibles, lee tus ajustes de configuración y crea la configuración final del menú de GRUB2.

Verificar los cambios de configuración

Verifiquemos que tus cambios se hayan aplicado correctamente a la configuración de GRUB2. Primero, comprueba que tus ajustes modificados se reflejen en el archivo /etc/default/grub:

sudo grep -E "(GRUB_TIMEOUT|GRUB_DEFAULT)" /etc/default/grub

Deberías ver una salida que muestre tus valores modificados:

GRUB_TIMEOUT=15
GRUB_DEFAULT=0

A continuación, verifica que estos ajustes se hayan aplicado al archivo de configuración de GRUB2 generado:

sudo grep -E "(timeout|default)" /boot/grub2/grub.cfg | head -5

Esto te mostrará cómo aparecen tus ajustes en el archivo de configuración real de GRUB2.

Crear una copia de seguridad de la configuración

Siempre es una buena práctica crear copias de seguridad de los archivos de configuración importantes antes de realizar cambios:

sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

Esto crea una copia de seguridad que puedes restaurar si es necesario.

Solucionar problemas y validar la configuración de GRUB2

En este paso final, aprenderás técnicas esenciales de resolución de problemas para configuraciones de GRUB2 y entenderás cómo validar tus cambios. Estas habilidades son cruciales para los administradores de sistemas que necesitan asegurarse de que sus modificaciones en GRUB2 funcionen correctamente antes de reiniciar sistemas en producción.

Comprobar la sintaxis de la configuración de GRUB2

Verifica que tu configuración de GRUB2 no tenga errores de sintaxis utilizando el comprobador de sintaxis integrado:

sudo grub2-script-check /boot/grub2/grub.cfg

Si no hay errores, este comando no devolverá ninguna salida. Cualquier error de sintaxis se mostrará con números de línea, lo que te ayudará a identificar y solucionar problemas.

Entender la estructura de directorios de GRUB2

Explora la estructura de directorios de configuración de GRUB2 para entender cómo funciona. Ten en cuenta que este directorio requiere privilegios de root para acceder:

sudo ls -la /etc/grub.d/

Esto te mostrará todos los scripts que generan las diferentes partes del menú de GRUB2. Cada script tiene un prefijo numérico que determina el orden de ejecución. Verás varios scripts como:

  • 00_header: Establece la configuración básica de GRUB2
  • 00_tuned: Configuraciones específicas de tuned
  • 01_users: Configuraciones de usuario
  • 10_linux: Busca y añade kernels de Linux
  • 20_linux_xen: Soporte para el hipervisor Xen
  • 30_os-prober: Busca otros sistemas operativos
  • 40_custom: Contiene entradas de menú definidas por el usuario

Los scripts reales pueden variar según la configuración de tu sistema y los paquetes instalados.

Ver las entradas de arranque disponibles

Examinemos qué entradas de arranque están disponibles en tu configuración generada:

sudo grep "menuentry" /boot/grub2/grub.cfg | head -10

Este comando mostrará las referencias de las entradas de menú y las entradas de menú reales. La salida puede incluir tanto variables de configuración (como menuentry_id_option) como entradas de menú de arranque reales. Busca las líneas que contengan definiciones completas de entradas de menú.

Verificar el tiempo de espera y los ajustes predeterminados

Comprueba que tu tiempo de espera y tus ajustes predeterminados estén configurados correctamente:

sudo grep -E "set timeout|set default" /boot/grub2/grub.cfg

Verás múltiples ajustes de tiempo de espera y predeterminados en el archivo de configuración. Esto es normal, ya que GRUB2 utiliza diferentes valores de tiempo de espera para diferentes escenarios:

  • Tiempo de espera principal (generalmente 15 segundos según lo configurado)
  • Tiempos de espera condicionales para situaciones especiales
  • Diferentes estilos de tiempo de espera (menú, oculto)

Los ajustes clave a verificar son:

  • set default="0" - Establece la primera entrada del menú como predeterminada
  • set timeout=15 - Establece el tiempo de espera del menú principal en 15 segundos

Aprender sobre la recuperación de GRUB2

Entender la recuperación de GRUB2 es esencial para solucionar problemas de arranque. En situaciones de emergencia, puedes:

  1. Acceder a la línea de comandos de GRUB2: Presiona c en el menú de GRUB2 para entrar al modo de línea de comandos
  2. Editar entradas de arranque: Presiona e para editar una entrada de arranque antes de iniciar
  3. Usar el modo de rescate: Si GRUB2 no puede encontrar su configuración, entrará en modo de rescate

Los comandos de recuperación comunes incluyen:

  • ls: Lista las particiones y archivos disponibles
  • set root=(hd0,1): Establece la partición raíz
  • linux /boot/vmlinuz root=/dev/sda1: Carga un kernel
  • boot: Inicia el proceso de arranque

Verificación final de la configuración

Hagamos una comprobación final de tu configuración completa de GRUB2:

sudo cat /etc/default/grub | grep -E "(TIMEOUT|DEFAULT)"

Esto confirma que tus ajustes básicos están guardados correctamente en el archivo de configuración fuente.

Lo que has logrado:

  • Modificar el tiempo de espera de GRUB2 y los ajustes de arranque predeterminados
  • Aplicar cambios de configuración usando grub2-mkconfig
  • Aprender a verificar y solucionar problemas en configuraciones de GRUB2
  • Crear procedimientos de copia de seguridad para archivos de arranque críticos
  • Entender la estructura de directorios de GRUB2 y las opciones de recuperación
  • Adquirir habilidades para validar configuraciones antes de reiniciar el sistema

Tu configuración de GRUB2 ahora está personalizada correctamente con un tiempo de espera de 15 segundos y la primera entrada del menú como predeterminada. En un entorno de producción, estos cambios surtirían efecto en el próximo reinicio del sistema, proporcionando una experiencia de arranque más amigable.

Resumen

En este laboratorio integral, obtuviste experiencia práctica con técnicas esenciales de personalización y resolución de problemas del gestor de arranque GRUB2. Comenzaste examinando la configuración predeterminada de GRUB2, luego modificaste parámetros clave, incluidos GRUB_TIMEOUT y GRUB_DEFAULT, para personalizar el comportamiento del menú de arranque. Aprendiste a aplicar estos cambios usando el comando grub2-mkconfig y a verificar que tus modificaciones se implementaran correctamente.

Las habilidades clave que desarrollaste incluyen comprender la estructura de configuración de GRUB2, modificar el archivo /etc/default/grub de forma segura, aplicar cambios de configuración correctamente e implementar procedimientos adecuados de verificación y copia de seguridad. También aprendiste técnicas esenciales de resolución de problemas, incluyendo la comprobación de sintaxis, la validación de la configuración y la comprensión de las opciones de recuperación de GRUB2, las cuales son cruciales para los administradores de sistemas.

El laboratorio enfatizó las habilidades prácticas que los administradores de sistemas necesitan en escenarios del mundo real, particularmente la capacidad de validar las configuraciones de GRUB2 antes de aplicarlas a sistemas en producción. Aprendiste a usar comandos como grub2-script-check para la validación de sintaxis y varios comandos grep para verificar que tus cambios se aplicaran correctamente a los archivos de configuración generados.

Estas habilidades te preparan para manejar escenarios de configuración de arranque con confianza y solucionar problemas relacionados con el arranque de manera efectiva en entornos Linux empresariales. Las técnicas de verificación que practicaste son especialmente valiosas para garantizar que las configuraciones de GRUB2 sean correctas antes de reiniciar sistemas en producción.