--- title: "Configurar y recuperar GRUB en Ubuntu 24.04" description: "Configura GRUB 2 en Ubuntu 24.04 (menú, kernel por defecto y parámetros de arranque) y recupera un sistema que no arranca desde la shell de GRUB o un chroot." category: "Internos de Linux" language: es source: https://cubepath.com/es/docs/internos-de-linux/configuracion-y-recuperacion-del-bootloader-grub updated: 2026-09-25 --- # Configurar y recuperar GRUB en Ubuntu 24.04 GRUB 2 es el gestor de arranque que usan Ubuntu, Debian y la mayoría de distribuciones: carga el kernel y el initramfs y le pasa al kernel sus parámetros de arranque. En este tutorial aprenderás dónde vive su configuración en Ubuntu 24.04, a cambiar el tiempo de espera y los parámetros del kernel, a arrancar una sola vez con un kernel anterior y a recuperar un sistema cuyo GRUB está roto, tanto desde la propia shell de GRUB como reinstalándolo desde un sistema de rescate. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. Debian 12 funciona igual; en Rocky Linux 9 los archivos están en `/boot/grub2/` y se usa `grub2-mkconfig` en lugar de `update-grub`. - Un usuario no root con privilegios `sudo`. - Acceso a la consola del servidor (la consola VNC del panel en un VPS), porque el menú de GRUB y los errores de arranque no se ven por SSH. - Para la recuperación: poder arrancar un sistema live o de rescate con Ubuntu. > Importante: un error en la configuración de GRUB puede dejar el servidor sin arrancar. Haz una instantánea o copia de seguridad antes de empezar y no cierres la sesión SSH hasta haber comprobado que todo funciona. ## Paso 1: Identificar cómo arranca tu sistema Lo primero es saber si el sistema arranca en modo BIOS (legacy) o UEFI, porque la reinstalación de GRUB es distinta en cada caso: ```bash [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS ``` Anota también el disco y las particiones: ```bash lsblk -f ``` ```output NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS sda ├─sda1 ext4 1.0 cloudimg-rootfs 4f1c2a9e-6b1d-4c0e-9a57-0e3b2d1f8c11 31.2G 18% / ├─sda14 └─sda15 vfat FAT32 UEFI 7A3B-19C2 98.3M 6% /boot/efi ``` En este ejemplo el disco es `/dev/sda`, la raíz está en `sda1` y la partición EFI en `sda15`. En tu servidor los nombres pueden ser `vda`, `nvme0n1` u otros. ## Paso 2: Conocer los archivos de configuración GRUB en Ubuntu se configura en tres lugares: | Ruta | Función | |---|---| | `/etc/default/grub` | Opciones principales: tiempo de espera, entrada por defecto, parámetros del kernel | | `/etc/default/grub.d/*.cfg` | Fragmentos que se leen después de `/etc/default/grub` y pueden sobrescribirlo | | `/etc/grub.d/` | Scripts que generan las entradas del menú; `40_custom` es para entradas propias | | `/boot/grub/grub.cfg` | Archivo final generado. No se edita a mano | `/boot/grub/grub.cfg` se regenera cada vez que ejecutas `update-grub` o se instala un kernel nuevo, así que cualquier cambio manual en él se pierde. Revisa si hay fragmentos en `grub.d`, algo habitual en imágenes cloud: ```bash ls /etc/default/grub.d/ grep -h GRUB_ /etc/default/grub.d/*.cfg 2>/dev/null ``` Si un fragmento define la misma variable que `/etc/default/grub`, gana el fragmento. Es la causa más común de "he cambiado `/etc/default/grub` y no pasa nada". ## Paso 3: Ajustar el menú y el tiempo de espera En servidores Ubuntu el menú suele estar oculto y el tiempo de espera es 0, lo que impide elegir otro kernel desde la consola. Muéstralo durante unos segundos editando `/etc/default/grub`: ```bash sudo cp /etc/default/grub /etc/default/grub.bak sudo nano /etc/default/grub ``` Localiza y ajusta estas líneas: ```ini GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=5 ``` - `GRUB_TIMEOUT_STYLE=menu` muestra siempre el menú (con `hidden` solo aparece si pulsas `Esc` durante el arranque). - `GRUB_TIMEOUT=5` espera 5 segundos antes de arrancar la entrada por defecto. Si en el paso anterior encontraste `GRUB_TIMEOUT` en `/etc/default/grub.d/`, cámbialo allí también. Regenera `grub.cfg`: ```bash sudo update-grub ``` ```output Sourcing file `/etc/default/grub' Sourcing file `/etc/default/grub.d/init-select.cfg' Generating grub configuration file ... Found linux image: /boot/vmlinuz-6.8.0-45-generic Found initrd image: /boot/initrd.img-6.8.0-45-generic Found linux image: /boot/vmlinuz-6.8.0-41-generic Found initrd image: /boot/initrd.img-6.8.0-41-generic done ``` Comprueba que el valor ha llegado al archivo final: ```bash grep -m1 'set timeout=' /boot/grub/grub.cfg ``` ## Paso 4: Añadir parámetros al kernel Los parámetros del kernel se definen en dos variables de `/etc/default/grub`: - `GRUB_CMDLINE_LINUX`: se aplican a todas las entradas, incluido el modo de recuperación. - `GRUB_CMDLINE_LINUX_DEFAULT`: solo a las entradas normales. Ubuntu pone aquí `quiet splash` en escritorio. Como ejemplo, habilita la salida del kernel por la consola serie además de la pantalla, útil para ver los mensajes de arranque desde una consola serie: ```bash sudo nano /etc/default/grub ``` ```ini GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8" ``` Si la variable ya tenía valores, añade los nuevos separados por espacios en lugar de reemplazarlos. Regenera la configuración y reinicia: ```bash sudo update-grub sudo reboot ``` Tras el reinicio, verifica los parámetros con los que arrancó el kernel: ```bash cat /proc/cmdline ``` ```output BOOT_IMAGE=/boot/vmlinuz-6.8.0-45-generic root=UUID=4f1c2a9e-6b1d-4c0e-9a57-0e3b2d1f8c11 ro console=tty1 console=ttyS0,115200n8 ``` ### Probar un parámetro sin tocar la configuración Para probar un parámetro una sola vez, en el menú de GRUB selecciona la entrada, pulsa `e`, añade el parámetro al final de la línea que empieza por `linux` y arranca con `Ctrl+X` o `F10`. El cambio desaparece en el siguiente reinicio, así que es la forma segura de probar antes de hacerlo permanente. ## Paso 5: Arrancar con un kernel anterior Si una actualización de kernel da problemas, puedes arrancar con el anterior. Lista las entradas del menú con sus nombres exactos: ```bash grep -E "^\s*(menuentry|submenu) " /boot/grub/grub.cfg | cut -d"'" -f2 ``` ```output Ubuntu Advanced options for Ubuntu Ubuntu, with Linux 6.8.0-45-generic Ubuntu, with Linux 6.8.0-45-generic (recovery mode) Ubuntu, with Linux 6.8.0-41-generic Ubuntu, with Linux 6.8.0-41-generic (recovery mode) ``` Las entradas por kernel están dentro del submenú `Advanced options for Ubuntu`, así que se nombran como `submenú>entrada`. ### Solo en el próximo arranque `grub-reboot` elige una entrada para el siguiente arranque y después vuelve a la por defecto. Requiere que `GRUB_DEFAULT` sea `saved`: ```bash sudo nano /etc/default/grub ``` ```ini GRUB_DEFAULT=saved ``` ```bash sudo update-grub sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-41-generic" sudo reboot ``` Tras el reinicio, confirma el kernel en uso: ```bash uname -r ``` ```output 6.8.0-41-generic ``` Si el servidor no arrancara con esa entrada, un reinicio más lo devuelve al kernel por defecto. ### De forma permanente Para fijar esa entrada como predeterminada, con `GRUB_DEFAULT=saved` usa `grub-set-default`: ```bash sudo grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-41-generic" ``` Recuerda deshacerlo con `sudo grub-set-default 0` cuando el kernel nuevo esté corregido, o seguirás arrancando con uno antiguo sin parches de seguridad. ## Paso 6: Recuperar el arranque desde la shell de GRUB Si GRUB carga pero no encuentra su configuración, verás un prompt `grub>` o `grub rescue>` en la consola. Desde ahí puedes arrancar el sistema a mano. Lista los discos y particiones que ve GRUB: ```text grub> ls (hd0) (hd0,gpt15) (hd0,gpt14) (hd0,gpt1) ``` Busca la partición que contiene `/boot`: ```text grub> ls (hd0,gpt1)/boot/ ``` Cuando veas los archivos `vmlinuz-*` e `initrd.img-*`, arranca desde ella. Sustituye `(hd0,gpt1)` y `/dev/sda1` por los valores de tu sistema; usa la tecla `Tab` para completar los nombres de archivo: ```text grub> set root=(hd0,gpt1) grub> linux /boot/vmlinuz root=/dev/sda1 ro grub> initrd /boot/initrd.img grub> boot ``` En Ubuntu, `/boot/vmlinuz` y `/boot/initrd.img` son enlaces al kernel más reciente. Si estás en `grub rescue>`, que tiene menos comandos, carga antes el módulo normal: ```text grub rescue> set prefix=(hd0,gpt1)/boot/grub grub rescue> set root=(hd0,gpt1) grub rescue> insmod normal grub rescue> normal ``` Una vez dentro del sistema, repara GRUB de forma permanente: ```bash sudo update-grub sudo grub-install /dev/sda ``` En sistemas UEFI omite el disco: `sudo grub-install` reinstala en la partición EFI montada en `/boot/efi`. ## Paso 7: Reinstalar GRUB desde un sistema de rescate Si no llegas ni al prompt de GRUB, arranca un sistema live o de rescate con Ubuntu y reinstala GRUB entrando en el sistema instalado con `chroot`. Identifica las particiones con `lsblk -f`, como en el paso 1, y monta la raíz. En este ejemplo la raíz es `/dev/sda1` y la partición EFI `/dev/sda15`: ```bash sudo mount /dev/sda1 /mnt ``` Si `/boot` está en una partición separada, móntala en `/mnt/boot`. En sistemas UEFI monta también la partición EFI: ```bash sudo mount /dev/sda15 /mnt/boot/efi ``` Monta los sistemas de archivos virtuales que necesitan las herramientas de GRUB y entra en el sistema: ```bash for d in dev proc sys run; do sudo mount --rbind "/$d" "/mnt/$d"; done sudo chroot /mnt ``` Dentro del `chroot` ya eres root. Reinstala GRUB según el modo de arranque. En BIOS, instala en el disco (no en la partición): ```bash grub-install /dev/sda ``` En UEFI: ```bash grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu ``` La instalación debe terminar sin errores: ```output Installing for x86_64-efi platform. Installation finished. No error reported. ``` En ambos casos, regenera la configuración: ```bash update-grub ``` Sal del `chroot`, desmonta y reinicia sin el medio de rescate: ```bash exit sudo umount -R /mnt sudo reboot ``` ## Solución de problemas **Los cambios en `/etc/default/grub` no tienen efecto.** Olvidaste ejecutar `sudo update-grub`, o un fragmento en `/etc/default/grub.d/` sobrescribe la variable. Revisa el paso 2. **`grub-install: error: cannot find EFI directory`.** La partición EFI no está montada en `/boot/efi`. Móntala antes de ejecutar `grub-install`. **`grub-install: warning: this GPT partition label contains no BIOS Boot Partition`.** El disco usa GPT y arranca en modo BIOS, pero no tiene la pequeña partición `BIOS boot` que GRUB necesita. Comprueba primero que el modo de arranque detectado es el correcto; si lo es, esa partición debe crearse antes de reinstalar. **El servidor arranca en `initramfs` en lugar de en el sistema.** GRUB funciona, pero el kernel no encuentra la raíz. Revisa que el UUID de `root=` en `/proc/cmdline` o en `grub.cfg` coincide con el de `lsblk -f` y que `/etc/fstab` es correcto. ## Conclusión Has aprendido dónde se configura GRUB en Ubuntu 24.04, a mostrar el menú, añadir parámetros al kernel, arrancar con un kernel anterior y recuperar el arranque desde la shell de GRUB o desde un sistema de rescate con `chroot`. Como siguientes pasos, puedes revisar los mensajes de arranque del kernel con `journalctl -k -b`, gestionar los módulos que carga el initramfs o limpiar kernels antiguos con `sudo apt autoremove --purge`.