GNU GRUB ("GRUB" para abreviar) es un paquete cargador de arranque del Proyecto GNU. GRUB es el principal ejemplo de la especificación Multiboot, que permite a un usuario tener más de un sistema operativo en su ordenador a la vez, y elegir cuál ejecutar cuando el ordenador se inicia. GRUB puede ser usado para seleccionar entre diferentes imágenes de kernel disponibles en las particiones de un sistema operativo en particular, así como para pasar parámetros de arranque a dichos kernels.
Qué hace GRUB
GRUB se encarga de las primeras etapas del arranque del ordenador: detecta sistemas operativos instalados, carga el kernel elegido en memoria y le pasa los parámetros necesarios. Gracias a su diseño modular puede:
- Arrancar múltiples sistemas operativos (multiboot).
- Leer sistemas de archivos comunes (ext2/3/4, Btrfs, XFS, FAT, NTFS con módulos) para localizar kernels y configuraciones.
- Realizar chainloading para delegar el arranque a otro gestor (por ejemplo, el cargador de Windows).
- Permitir edición temporal de la línea de arranque desde el menú (útil para añadir parámetros como single, nomodeset, etc.).
- Ofrecer modo de rescate y un intérprete de comandos para solucionar problemas de arranque.
Versiones y compatibilidad
Las dos generaciones principales son GRUB Legacy (antiguo) y GRUB 2 (actual). La mayoría de distribuciones modernas usan GRUB 2, que introdujo:
- Configuración modular y scripts para generar el archivo de configuración.
- Soporte nativo para UEFI y BIOS (Legacy).
- Soporte mejorado de temas, resolución de vídeo y reconocimiento de sistemas de archivos.
Instalación y archivos de configuración
Según el modo de arranque (BIOS o UEFI) la instalación se realiza de distinta forma:
- En BIOS/MBR: GRUB instala un bootloader en el MBR (o en la partición de arranque) y los módulos se encuentran en /boot/grub (o /boot/grub2 en algunas distribuciones).
- En UEFI: se instala un ejecutable EFI (por ejemplo, grubx64.efi) en la partición EFI (ESP) y el firmware UEFI carga ese fichero.
Archivos importantes:
- /boot/grub/grub.cfg (archivo de configuración generado, no editar a mano salvo excepciones).
- /etc/default/grub (opciones por defecto como tiempo de espera y parámetros globales).
- /etc/grub.d/ (scripts que generan las entradas del menú).
Comandos frecuentes:
- grub-install /dev/sdX — instala GRUB en un disco.
- grub-mkconfig -o /boot/grub/grub.cfg (o update-grub en algunas distros) — genera grub.cfg.
- grub-set-default / grub-reboot — elegir la entrada por defecto o para el próximo reinicio.
Multiboot y chainloading
Para tener Windows y varias distribuciones Linux en el mismo equipo, GRUB detecta kernels y otros cargadores y crea entradas en el menú. Si se quiere delegar el arranque al cargador de Windows se usa chainloader, por ejemplo en una entrada manual:
set root=(hd0,1) chainloader +1 boot
La mayoría de distribuciones automatizan esto con scripts en /etc/grub.d/ para generar entradas que arrancan Windows correctamente.
Recuperación y solución de problemas
Si GRUB no se inicia puedes encontrarte con pantallas como "grub rescue>" o "no se encontró el dispositivo". Pasos habituales de recuperación:
- Desde el prompt de GRUB: localizar la partición con los archivos (comandos ls, set prefix, set root) e intentar cargar el módulo normal (insmod normal) y ejecutar normal.
- Arrancar desde un medio live (USB) y reinstalar GRUB con grub-install y regenerar grub.cfg.
- Comprobar que la partición EFI esté intacta en sistemas UEFI y que exista un ejecutable válido (a menudo usando el paquete shim en sistemas con Secure Boot).
Seguridad
GRUB permite protecciones básicas:
- Contraseña para editar entradas o para arrancar ciertos menús.
- Soporte para Secure Boot mediante firmas: muchas distribuciones usan shim firmado por Microsoft que a su vez carga GRUB firmado.
Consejos prácticos
- Antes de modificar particiones o reinstalar sistemas, anota la tabla de particiones y haz copia de seguridad de /boot y de /etc/default/grub.
- Evita editar directamente /boot/grub/grub.cfg: las modificaciones deben hacerse en /etc/default/grub o en /etc/grub.d/ y luego regenerar el fichero.
- Si necesitas añadir parámetros al kernel temporalmente, en el menú de GRUB pulsa la tecla 'e' sobre una entrada y edita la línea linux (no olvides arrancar después con Ctrl+X o F10).
- Para entornos UEFI, asegúrate de que la partición EFI (ESP) esté montada cuando reinstales GRUB.
Casos comunes
- Windows sobrescribe el MBR: reinstala GRUB desde un live de Linux con grub-install y luego grub-mkconfig.
- No aparece una distro en el menú: ejecuta grub-mkconfig o update-grub para forzar la detección.
- Problemas con Secure Boot: usa la versión firmada de GRUB (a través de shim) o desactiva Secure Boot si controlas el equipo y comprendes los riesgos.
GRUB es una herramienta potente y flexible que, bien configurada, facilita la convivencia de varios sistemas en un mismo equipo y ofrece recursos de diagnóstico y recuperación cuando el arranque falla. Si vas a hacer cambios importantes, documenta cada paso y mantén un medio de rescate (live USB) a mano.



