Grub personalizado, Debian 13 - Trixie
Se que existe el paquete grub-customizer para personalizar el gestor de arranque Grub desde una interfaz gráfica. Pero yo prefiero hacer la configuración manualmente.
![]() |
| GRUB Debian 13 - personalizado por UsuarioDebian |
Aconsejo no modificar el archivo: /etc/default/grub para realizar nuestras personalización del grub. Debido a que en una futura actualización de grub, este realice cambios en el fichero original, que
previamente hemos modificado nosotros. El sistema nos avisa que existen
cambios por defecto en la actualización de dicho fichero, entonces nos
pregunta: ¿quieres conservar el archivo actual o quieres la
configuración por defecto de dicho paquete?. Si respondemos erróneamente
o nos equivocamos, pues nos tocará volver a modificar el archivo original, para dejarlo según nuestros gustos, necesidades o
preferencias.
Para evitar que grub vuelva a su configuración por defecto, en lugar de modificar el archivo: /etc/default/grub, nos vamos a crear un nuevo archivo en: /etc/defatult/grub.d y le llamaremos como mas nos interese (Te aconsejo que comience por un numero, mas el guión bajo o signo de subrayado, más un nombre, y tiene que tener la extensión .cfg), por ejemplo: 10_mis_ajustes.cfg y dentro de dicho archivo le ponemos las opciones que nos interesen configurar, cada una en una linea distinta:
GRUB_DISABLE_OS_PROBER=false
GRUB_GFXMODE=640x480
GRUB_TIMEOUT=10
GRUB_BACKGROUND="/boot/grub/themes/mi_fondo.png"
De este modo evitamos modificar el archivo original y que una actualización reescriba dicho archivo.
Para finalizar ejecutamos nuevamente el comando:
sudo update-grub
NOTA MUY IMPORTANTE: Si hay la misma variable definida en varios lineas y/o en varios ficheros ( /etc/default/grub ó /etc/default/grub.d/10_mis_ajustes.cfg ), la última asignación leída, es la que prevalece (el orden de lectura puede depender de la implementación; normalmente es: primero se lee: /etc/default/grub luego los ficheros personalizados que se encuentran en: /etc/default/grub.d en orden numérico y alfabético).
Algunas opciones de: /etc/default/grub
Este archivo define valores por defecto que grub-mkconfig/grub.cfg usa para generar el menú GRUB. A continuación expongo un listado de opciones, con su propósito, formato y ejemplos de uso.
![]() |
| GRUB por defecto |
GRUB_DISABLE_OS_PROBER
Propósito: Activa la detección y añadido automático de otros sistemas operativos (os-prober) como Windows, Ubuntu.... Se necesita tener instalar el paquete: os-prober
Valores: true/false.
Nota: útil para seguridad o si provoca entradas duplicadas.
Ejemplo:
GRUB_DISABLE_OS_PROBER=false

GRUB_DISABLE_OSPROBER=false
GRUB_GFXMODE
- GRUB_DEFAULT
Propósito: Entrada por defecto que GRUB arrancará.
Formato: índice, comienza por el 0 (0, 1, …) o subíndice (1>1, 1>2 ...), nombre exacto de la entrada entre comillas, o "saved". Enlace (clic aquí) a un manual mas detallado
Ejemplos:
GRUB_DEFAULT=0 → primera entrada.
GRUB_DEFAULT=2>1 → tercera entrada (Submenú) primera entrada
GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 6.12.74+deb13+1-amd64" → arranca entrada por nombre.
GRUB_DEFAULT=saved junto con GRUB_SAVEDEFAULT=true → recuerda última selección.

GRUB_DEFAULT=0 
GRUB_DEFAULT=4>2
GRUB_TIMEOUT
GRUB_TIMEOUT_STYLE
GRUB_TIMEOUT_RECOVERY
Propósito: (en algunas distribuciones) segundos de timeout para entradas de recuperación.
Formato: segundos enteros (5, 10, 30...). No siempre presente.
GRUB_TIMEOUT_RECOVERY=30
GRUB_DISTRIBUTOR
Propósito: Nombre que GRUB usará para la entrada de la distribución.
Formato: cadena. Por defecto suele obtenerse dinámicamente (ej. lsb_release).
Ejemplo:
GRUB_DISTRIBUTOR=
`( . /etc/os-release && echo ${NAME} )`
GRUB_CMDLINE_LINUX
Propósito: Parámetros kernel que se añaden a todas las entradas normales (no recovery).
Formato: cadena con parámetros separados por espacios.
Ejemplos:
GRUB_CMDLINE_LINUX="quiet splash"
GRUB_CMDLINE_LINUX="nomodeset acpi=off"
GRUB_CMDLINE_LINUX_DEFAULT
Propósito: Parámetros kernel añadidos solo a la entrada por defecto normal (y que suelen ser adecuados para arranque normal, no recovery).
Formato: cadena.
Ejemplo:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_SAVEDEFAULT
GRUB_DISABLE_RECOVERY
GRUB_TERMINAL
Propósito: Define terminales de salida para GRUB (texto, gfxterm, serial).
Valores: por ejemplo: console o gfxterm o serial.
Ejemplo:
GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX
Propósito: Controla la resolución que el kernel usará después de que GRUB transfiera control.
Valores: "keep" para mantener la resolución de GRUB, o una resolución concreta.
Ejemplo:
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_FONT
Propósito: Ruta a una fuente TTF/GRUB para usar en el menú (mejora legibilidad en altas resoluciones).
Ejemplo:
GRUB_FONT=/boot/grub/fonts/unicode.pf2
GRUB_BACKGROUND
GRUB_THEME
Propósito: Ruta a un tema completo para GRUB.
Formato: ruta al archivo theme.txt del tema.
Ejemplo:
GRUB_THEME="/boot/grub/themes/mytheme/theme.txt"
GRUB_DISABLE_LINUX_UUID
Propósito: Forzar uso de dispositivos (e.g., /dev/sda1) en lugar de UUID en entradas kernel.
Valores: true/false.
Ejemplo:
GRUB_DISABLE_LINUX_UUID=true
GRUB_DISABLE_SUBMENU
Muy Importante
Tras editar /etc/default/grub hay que regenerar grub.cfg con:update-grub
No todas las variables existen en todas las distribuciones; algunas son específicas de Debian/Ubuntu y derivadas. Si una variable no está en tu archivo, puedes añadirla siguiendo el formato VAR=valor.
Valores booleanos suelen usarse como true/false o y/n según distribuciones; seguir estilo local.
Como añadir entradas personalizadas
Vamos añadir 4 entradas en el GRUB que permitan: "Separar entradas", "Reiniciar el ordenador" y "Apagar el ordenador".
![]() |
| GRUB Personalizado por UsuarioDebian |
Vamos a crear 4 nuevos archivos personalizados en: /etc/grub.d/ con los siguientes nombres:
15_separador_debian
30_separador_os-prober
35_separador_uefi
50_reiniciar_apagar
y por ultimo volvemos a generar grub.cfg
OBSERVACIÓN: Para crear cada archivo podemos seleccionar y copiar el contenido que se encuentra entre las dobles líneas discontinuas de color azul (==============)
15_separador_debian
===================================
sudo tee /etc/grub.d/15_separador_debian > /dev/null <<'EOF'
#!/bin/sh
exec tail -n +3 "$0"
menuentry "=====================================================================" {
savedefault
}
EOF
===================================
Y ahora hacemos ejecutable dicho archivo, con el siguiente comando:
sudo chmod +x /etc/grub.d/15_separador_debian
30_separador_os-prober
===================================
sudo tee /etc/grub.d/30_separador_os-prober > /dev/null <<'EOF'
#!/bin/sh
exec tail -n +3 "$0"
menuentry "=====================================================================" {
savedefault
}
EOF
===================================
Y ahora hacemos ejecutable dicho archivo, con el siguiente comando:
sudo chmod +x /etc/grub.d/30_separador_os-prober
35_separador_uefi
===================================
sudo tee /etc/grub.d/35_separador_uefi > /dev/null <<'EOF'
#!/bin/sh
exec tail -n +3 "$0"
menuentry "=====================================================================" {
savedefault
}
EOF
===================================
Y ahora hacemos ejecutable dicho archivo, con el siguiente comando:
sudo chmod +x /etc/grub.d/35_separador_uefi
50_reiniciar_apagar
===================================
sudo tee /etc/grub.d/50_reiniciar_apagar > /dev/null <<'EOF'
#!/bin/sh
exec tail -n +3 "$0"
menuentry "Reiniciar el ordenador" {
reboot
}
menuentry "Apagar el ordenador" {
halt
}
EOF
===================================
Y ahora hacemos ejecutable dicho archivo, con el siguiente comando:
sudo chmod +x /etc/grub.d/50_reiniciar_apagar
Por ultimo actualizamos el grub, usando el siguiente comando:
sudo update-grub
Observación muy importante
Las instrucciones usan las órdenes internas de GRUB: reboot y halt. En la mayoría de configuraciones funcionarán, pero en algunos sistemas con UEFI/secure boot o ciertas combinaciones de firmware pueden no funcionar.
Si quieres que aparezcan en una posición concreta del menú, elige el prefijo numérico y el nombre apropiado, (los archivos en /etc/default/grub.d/ se ordenan por numero y orden alfabético).
GRUB: Tecla Esc, Cursores (flechas), Intro (Enter)
Tecla Esc = Retroceder / Cancelar
- Sale de la pantalla o diálogo actual y vuelve al nivel de menú anterior (incluido el menú principal).
- Si se pulsa repetidamente, sigue retrocediendo hasta el menú principal.
- En el menú principal, Esc puede llevar al minimal grub (pantalla reducida o modo diagnóstico) según la configuración o tema.
- Si Plymouth está activo, Esc muestra el arranque detallado (mensajes del kernel y servicios). Pulsar Esc otra vez vuelve al splash gráfico (Plymouth).
Timeout / cuenta atrás
- Si hay una cuenta atrás para arrancar la entrada por defecto, pulsar Esc, cancela y muestra el menú de selección.
Teclas de dirección
- Teclas de cursores (flechas) Arriba / Abajo / Izquierda / Derecha: al navegar con cualquiera de las flechas, se detiene la cuenta atrás para el arranque automático.
- Derecha sobre una entrada: en muchas configuraciones, pulsar → (derecha) selecciona/arranca inmediatamente la entrada destacada (comportamiento que puede variar según versiones/temas).
- Enter: arranca la entrada seleccionada.
Consola de GRUB
- La tecla: C, abre la consola de comandos (grub>). La tecla: Esc, abre la consola cuando estamos posicionado en el menú principal
Actualizar/Activar la configuración
Después de realizar alguna modificación en el archivo: /etc/default/grub o en: /etc/default/grub.d/10_mis_ajustes.cfg. tenemos que usar uno de estos dos comandos para que los cambios surtan efectos:
sudo update-grub
# update-grub










