GNU GRUB

Introducción GNU GRUB

En el ámbito del arranque de sistemas operativos, el programa que gestiona qué núcleo cargar —o incluso qué sistema operativo arrancar— es de vital importancia.

El gestor de arranque GNU GRUB (acrónimo de GNU GRand Unified Bootloader) es una de las herramientas más tradicionales, robustas y ampliamente adoptadas para sistemas tipo Unix-Linux. Su uso y conocimientos siguen siendo muy relevantes, pues nos permiten intervenir en el arranque, recuperar sistemas, configurar multiboot o adaptarnos a nuevas arquitecturas de firmware.

GNU GRUB

Este artículo desplegará de forma estructurada los siguientes apartados:

  1. Contexto histórico y evolución de GRUB.
  2. Su papel en el proceso de arranque del sistema.
  3. Arquitectura y características técnicas.
  4. Versiones principales: GRUB Legacy vs. GRUB 2.
  5. Instalación y configuración (BIOS y UEFI).
  6. Personalización y opciones avanzadas.
  7. Problemas comunes y métodos de recuperación.
  8. Conclusiones y recomendaciones.
  9. Preguntas frecuentes (FAQ).

Vamos pues paso a paso adentrándonos en cada una de estas secciones, con una visión que valora cómo se ha hecho tradicionalmente y cómo esas raíces siguen acompañándonos hoy.

1. Contexto histórico y evolución

El origen de GRUB se remonta a los primeros años del proyecto Free Software Foundation. Fue creado por Erich Stefan Boleyn con el objetivo de ofrecer un gestor de arranque flexible para sistemas GNU/Hurd.

La evolución es la siguiente:

  • La versión original se conoce como GRUB Legacy (serie 0.9x).
  • Posteriormente se emprendió una reescritura completa para dar lugar a GRUB 2, con mejoras de portabilidad, robustez y soporte para nuevas plataformas.
  • Hoy en día GRUB 2 es el estándar en la mayoría de distribuciones Linux.

Ese camino histórico refleja cómo lo tradicional —una herramienta que conocimos en sus formas más básicas— sigue vigente y ha sido adaptada a nuevos retos de hardware y firmware.

2. Papel en el proceso de arranque

Para entender por qué GRUB es tan relevante, conviene describir brevemente el proceso de arranque de un sistema tipo PC tradicional y cómo GRUB encaja en él.

Cuando encendemos el equipo, el firmware (BIOS o UEFI) realiza una serie de comprobaciones (POST) y luego busca el dispositivo de arranque. En sistemas BIOS antiguos, se lee el MBR (Master Boot Record) del disco para encontrar el primer código de arranque. En sistemas UEFI, se busca un archivo EFI en la partición de sistema EFI (ESP).

GRUB actúa como ese gestor que:

  • se carga inicialmente (en sus primeras etapas) desde el MBR o partición EFI;
  • da acceso a sistemas de archivos, permite elegir núcleo o sistema operativo;
  • finalmente transfiere el control al núcleo del sistema operativo (o a otro gestor en caso de chain-loader).

De hecho, la propia documentación de GRUB indica: “Brevemente, un gestor de arranque es el primer programa de software que se ejecuta cuando un ordenador arranca. Es responsable de la carga y transferencia de control al kernel del sistema operativo.”

Este papel es fundamental: sin un gestor de arranque sólido, el sistema puede quedarse sin poder arrancar con normalidad, perdiendo la visión de orden tradicional que muchos administradores valoran.

3. Arquitectura y características técnicas

GRUB destaca por una serie de decisiones técnicas que lo diferencian de otros gestores de arranque más simples (como el desaparecido LILO). Algunas de sus características más importantes:

a) Comprensión de sistemas de archivos
GRUB no se limita a leer sectores físicos directamente, sino que es capaz de entender diversos sistemas de archivos (FAT, ext4, Btrfs, XFS, entre otros). Este enfoque permite que el gestor lea archivos de configuración, kernels e initrd usando rutas de archivo, lo que simplifica la administración frente a sistemas más antiguos que requerían mapas de sectores físicos.

GRUB 2 ha sido diseñado con un marco modular, lo que facilita su adaptación a múltiples plataformas de hardware, aparte del tradicional x86 (por ejemplo ARM, MIPS, PowerPC).

c) Multiboot y carga en cadena (chain loading)
GRUB puede cargar diversos sistemas operativos —Linux, GNU/Hurd, BSD, e incluso Windows mediante chain loading— gracias a la especificación Multiboot.

d) Menú de arranque, intérprete de comandos, scripting
El usuario puede seleccionar una entrada de arranque desde un menú visual o bien usar un shell dentro de GRUB para comandos directos. Además, GRUB 2 soporta un mini-lenguaje de scripting para operaciones más complejas.

e) Soporte para BIOS y UEFI
GRUB está preparado tanto para entornos tradicionales BIOS como para UEFI, lo que lo hace adecuado para sistemas modernos.

Estos rasgos demuestran por qué GRUB es considerado un estándar de facto: combina potencia, flexibilidad y un enfoque técnico sólido, sin abandonar la perspectiva tradicional de “un buen gestor de arranque sirve para mantener el control del sistema”.

4. Versiones principales: GRUB Legacy vs GRUB 2

En una visión tradicional, vale la pena comprender las diferencias entre las dos generaciones principales de GRUB, pues muchas máquinas “históricas” aún pueden usar GRUB Legacy, y conocerlo permite una mejor transición.

GRUB Legacy (serie 0.9x)

  • Fue la versión original ampliamente usada en los primeros tiempos de Linux.
  • Su desarrollo ha quedado obsoleto: ya no se encuentra en mantenimiento activo.
  • La arquitectura era más limitada en cuanto a portabilidad y características modernas.

GRUB 2

  • Reescrito desde cero para abordar las limitaciones de la versión anterior: mayor robustez, portabilidad, soporte de scripting, nuevas plataformas.
  • Adoptado ampliamente por las distribuciones modernas: por ejemplo, muchas distribuciones lo han incorporado por defecto desde hace años.
  • Algunas diferencias técnicas importantes incluyen: mayor modularidad, soporte nativo para UEFI, mejor manejo de sistemas de archivos modernos, posibilidad de temas, interfaz gráfica de menú, entre otras.

Resumen comparativo:

CaracterísticaGRUB LegacyGRUB 2
Desarrollo activoNo (en obsolescencia)Sí, versión moderna
PortabilidadLimitadaAlta
Soporte de filesystemsBásicoExtensa
ScriptingMuy limitadoLenguaje incorporado
Soporte UEFINativo limitadoDiseñado para BIOS/UEFI
Flexibilidad de menúBásicaAvanzada, con temas y lógica

La conclusión es clara: para nuevos sistemas y para mantener un enfoque tradicional de fiabilidad, GRUB 2 es la opción lógica. No obstante, conocer GRUB Legacy permite comprender el “por qué” de muchas recomendaciones antiguas.

5. Instalación y configuración

A continuación, vemos cómo tradicionalmente se instala GRUB 2 y cómo se configura para que el sistema arranque correctamente.

5.1 Determinar el tipo de firmware

Lo primero es averiguar si el sistema utiliza BIOS (heredado) o UEFI. En muchas distribuciones Linux esto se puede comprobar con:

[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

5.2 Instalación en sistemas BIOS (MBR)

Un procedimiento típico en una distribución tipo Fedora (o derivadas) es:

  1. Asegurarse de que los paquetes grub2 y os-prober están instalados.
  2. Identificar el dispositivo de disco principal (/dev/sda, por ejemplo).
  3. Ejecutar:
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

4. Reiniciar el sistema.

5.3 Instalación en sistemas UEFI

Cuando el sistema arranca con firmware UEFI, el procedimiento requiere montar la partición EFI (ESP), por ejemplo en /boot/efi, y luego instalar grubx64.efi (o la variante adecuada para la arquitectura) dentro de ESP/EFI/GRUB/, configurar los módulos en /boot/grub/x86_64-efi/, etc.
En muchos casos, los instaladores de distribuciones ya lo hacían automáticamente, pero para recuperación manual esta información resulta vital.

5.4 Configuración del menú

El archivo principal de configuración es grub.cfg, aunque este archivo no se edita habitualmente directamente. En su lugar, se suelen modificar variables en /etc/default/grub (por ejemplo GRUB_TIMEOUT, GRUB_DEFAULT, etc.) y luego ejecutar update-grub o grub2-mkconfig según la distribución.
Ejemplo en /etc/default/grub:

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Tras editarlo se ejecuta sudo update-grub para generar de nuevo grub.cfg.

5.5 Buenas prácticas

  • Siempre respaldar antes de modificar los archivos de arranque o la partición EFI.
  • Usar una partición /boot separada si se emplea un sistema de archivos poco soportado por GRUB (por ejemplo ciertas variantes de Btrfs).
  • Tener cuidado con Secure Boot en sistemas UEFI y asegurarse de que el gestor está firmado o autorizado.

6. Personalización y opciones avanzadas

Una vez instalado GRUB, muchas organizaciones y administradores desean adaptarlo a sus necesidades; aquí se recogen algunas opciones típicas.

6.1 Tema gráfico y menú amigable

GRUB 2 permite usar un tema visual —colores, fondo, tipografía— y definir entradas personalizadas con nombres claros: lo cual revitaliza la experiencia del arranque sin perder la solidez tradicional.

6.2 Scripting y lógica de arranque

Se pueden utilizar condicionales en los archivos de configuración para, por ejemplo, seleccionar automáticamente una entrada tras un tiempo, o bien marcar una entrada como predeterminada guardada (GRUB_SAVEDEFAULT=true). Esto es útil en entornos multiboot

6.3 Recuperación desde la línea de comandos de GRUB

En caso de que el sistema no arranque correctamente, GRUB ofrece un intérprete de comandos desde el menú de rescate, donde se pueden localizar kernels, definir manualmente part­ición, raíz, initrd y arrancar. → Este mecanismo revive la filosofía tradicional de mantener control total sobre el arranque.

6.4 Chain-loading y multiarranque

Si en un equipo conviven diversos sistemas operativos (Linux, Windows, BSD), GRUB puede cargar otro gestor en cadena. Por ejemplo, arrancar Windows mediante su propio gestor, desde un menú de GRUB.

6.5 Soporte para entornos RAID, LVM y cifrado

GRUB 2 es capaz de reconocer volúmenes LVM, sistemas cifrados (según configuración), y en algunos casos arrancar desde sistemas RAID. Esto abre puertas tradicionales de administración avanzada.

7. Problemas comunes y métodos de recuperación

Aunque GRUB es muy fiable, hay escenarios clásicos donde la precisión del administrador se vuelve crítica.

7.1 Menú que no aparece

Un problema frecuente es que al arrancar solo se arranque un sistema por defecto sin mostrar el menú (por ejemplo, tras instalar Windows). Solución: editar /etc/default/grub para cambiar GRUB_TIMEOUT_STYLE=menu y GRUB_TIMEOUT=10, luego ejecutar update-grub.

7.2 Arranque en modo UEFI que no detecta GRUB

En sistemas UEFI, puede ocurrir que el firmware cargue directamente el gestor de Windows u otro, pasando por alto GRUB. Normalmente se debe añadir manualmente la entrada de arranque en la NVRAM, o en el BIOS/UEFI seleccionar el archivo grubx64.efi.

7.3 Corrupción del MBR o partición EFI

Cuando se altera el MBR, se instala otro gestor de arranque o se borran las entradas UEFI, GRUB deja de arrancar. En estos casos conviene iniciar desde un medio live de Linux, montar la partición y ejecutar de nuevo grub2-install (o equivalente) para restaurar.

7.4 Uso de sistemas de archivos no soportados

Si la partición /boot o / está en un sistema de archivos no totalmente soportado por GRUB (por ejemplo ciertos tipos de Btrfs con características avanzadas), se puede impedir la escritura del archivo grubenv o causar fallos. Algunas distribuciones ofrecen soluciones específicas.

8. Conclusiones y recomendaciones

El gestor de arranque GRUB representa la conjunción de tradición, fiabilidad y flexibilidad en el mundo Unix-Linux. Mantener conocimientos sobre GRUB equivale a conservar una capacidad de administración “a nivel de arranque” que muchas herramientas automáticas internamente usan pero pocas veces permiten modificar.

Mis recomendaciones finales serían:

  • En equipos nuevos, utilice siempre GRUB 2 en lugar de versiones antiguas.
  • Mantenga siempre un respaldo del archivo de configuración (/etc/default/grub, grub.cfg) y del esquema de particionado.
  • Adquiera el hábito de revisar qué firmware (BIOS/UEFI) utiliza el sistema antes de la instalación.
  • Para entornos críticos, documente el procedimiento de recuperación de GRUB (por ejemplo, arrancar desde live, reinstalación del gestor).
  • Prefiera una partición /boot simple con sistema de archivos ampliamente soportado (por ejemplo ext4) para evitar sorpresas.
  • Cuando haya sistemas múltiples instalados (multiboot), comprenda que GRUB puede gestionarlos, pero requiere atención: instalar otro sistema operativo puede sobrescribir las entradas de arranque.

Con ese enfoque, se mantiene la filosofía tradicional de “saber qué y cómo arranca” el sistema, y al mismo tiempo se aprovechan las características modernas que GRUB 2 ofrece.

9. Preguntas frecuentes (FAQ)

¿Puedo usar otro gestor de arranque en lugar de GRUB?
Sí. Algunos usuarios optan por otros gestores como systemd‑boot, rEFInd u otros. Sin embargo, GRUB sigue siendo el más universal en sistemas Linux y ofrece amplia compatibilidad.

¿Necesito GRUB para instalar Linux?
El instalador de muchas distribuciones configura automáticamente un gestor de arranque; sin embargo, un administrador prudente debe saber cómo funciona GRUB para recuperar el sistema si algo falla.

¿Qué archivo edito para cambiar el tiempo de espera del menú de GRUB?
En la mayoría de distribuciones, se edita /etc/default/grub y se ajusta la variable GRUB_TIMEOUT. Luego, se ejecuta update-grub o el comando equivalente de la distribución.

¿Por qué no aparece el menú de GRUB en mi arranque?
Puede ser porque GRUB_TIMEOUT_STYLE=hidden o GRUB_TIMEOUT=0, lo que hace que el menú no se muestre. Cambiando estos valores y regenerando grub.cfg normalmente resuelve el problema.

¿GRUB es compatible con UEFI?
Sí. GRUB 2 dispone de soporte para UEFI y se puede instalar en la partición EFI de sistemas modernos.