Cómo cambiar de versión de kernel Linux en GRUB2 de forma segura

Última actualización: 31/03/2026
Autor: Isaac
  • GRUB2 permite elegir de forma flexible qué versión de kernel arrancar por defecto, usando índices de menú o el nombre exacto de la entrada.
  • Convivir con ramas linux-generic, HWE y edge exige controlar GRUB para evitar inestabilidades al instalar kernels más recientes.
  • Editar /etc/default/grub y regenerar la configuración con update-grub es la base para fijar o restaurar el kernel predeterminado.
  • Desinstalar kernels conflictivos y mantener al menos una rama estable garantiza que el sistema siga siendo arrancable y seguro.

Cambiar versión kernel Linux en GRUB2

Elegir qué versión del kernel arranca por defecto en Linux no es sólo una manía de administradores tiquismiquis: en muchas ocasiones es la diferencia entre tener un sistema estable o sufrir cuelgues, incompatibilidades con controladores gráficos o fallos en hardware reciente. Sobre todo en Ubuntu y otras derivadas de Debian, donde conviven ramas genéricas, HWE y versiones experimentales, controlar GRUB2 es casi obligatorio.

Cuando instalas varios núcleos en paralelo, GRUB2 siempre intenta iniciar el kernel más moderno disponible. Eso está bien la mayor parte del tiempo, pero si te has visto obligado a volver a una versión anterior por culpa de un bug o un driver que falla, necesitarás indicarle a GRUB qué entrada usar como predeterminada. En este artículo vamos a ver, con bastante detalle y sin rodeos, cómo hacerlo de forma segura y duradera, qué matices debes tener en cuenta con las nuevas ramas HWE, y cómo combinarlo con otros trucos útiles relacionados con GRUB2.

Qué versiones de kernel maneja Ubuntu y por qué te interesa cambiarlas

Ubuntu mantiene varias líneas de kernel en paralelo, pensadas para escenarios diferentes. Entender qué llevas instalado es el primer paso antes de tocar nada en GRUB2, porque de ello dependerá qué entradas veas en el menú de arranque y cuáles quieres usar como predeterminadas.

Por un lado está la rama clásica linux-generic, que es la que suele venir por defecto en servidores y equipos donde prima la estabilidad. Son kernels de larga duración, muy probados, y en versiones LTS como Ubuntu 22.04 suelen corresponderse con series como la 5.15.x. Su filosofía es clara: menos sorpresas, menos roturas después de una actualización.

En equipos de escritorio Ubuntu ofrece además kernels HWE (Hardware Enablement). Estas ramas se instalan, por ejemplo, con comandos como sudo apt install linux-generic-hwe-22.04 y apuntan a versiones más recientes del kernel, como la serie 6.5.x en el caso de Ubuntu 22.04 LTS, con el objetivo de dar soporte a hardware moderno que no existe cuando se libera la LTS original.

Si necesitas ir un paso más allá, también existe la variante hwe-edge, pensada como rama de «vanguardia» o bleeding edge. Se instala con órdenes del estilo sudo apt install linux-generic-hwe-22.04-edge y suele traer kernels todavía más nuevos (por ejemplo 6.7.x en el mismo Ubuntu 22.04). Ofrece soporte de hardware muy reciente, pero a costa de aumentar la probabilidad de encontrarte con bugs, inestabilidades o comportamientos raros.

Aunque el sistema solo ejecuta un kernel cada vez, las imágenes de núcleos antiguos se mantienen en /boot como seguro de vida. Si una actualización te deja un equipo inusable, poder arrancar una versión anterior puede salvarte el día. El problema es que, una vez instalas un kernel más moderno, Ubuntu tenderá a arrancarlo siempre, y desinstalarlo sin poder entrar con otro kernel puede ser un dolor.

Opciones avanzadas de GRUB2

Elegir temporalmente un kernel diferente desde el menú de GRUB2

Antes de meternos a editar archivos, conviene recordar que GRUB2 ya te permite escoger otro kernel manualmente en el arranque. Si tienes acceso físico al equipo y un teclado conectado, muchas veces no necesitas nada más para probar una versión previa.

En Ubuntu, al encender la máquina, puedes mostrar el menú de GRUB2 manteniendo pulsada la tecla Mayús (Shift) durante la fase inicial del arranque. En sistemas BIOS tradicionales funciona bien; en UEFI suele bastar con que GRUB muestre el menú por defecto, pero la idea es la misma: ver el listado de sistemas y opciones.

En ese menú verás normalmente una primera entrada del tipo Ubuntu, que es la que arranca el último kernel instalado, seguida de un submenú llamado Advanced options for Ubuntu (Opciones avanzadas). Dentro de ese submenú se listan todas las versiones de kernel disponibles, cada una con su modo normal y su modo de recuperación.

  MEMORY_MANAGEMENT (0x0000001A): Causas, diagnóstico y soluciones detalladas al error de memoria en Windows

Si el kernel más reciente te está dando problemas, lo típico es entrar en «Advanced options for Ubuntu» y elegir una versión anterior (por ejemplo, Ubuntu, with Linux 5.15.0-94-generic) en lugar de la última 6.x. Una vez arrancado correctamente con esa versión, podrás desinstalar los kernels conflictivos y regenerar la configuración con sudo update-grub.

Claro, esta solución manual tiene trampa: solo funciona si puedes interactuar con GRUB. En servidores sin teclado, máquinas remotas o entornos donde no ves la consola de arranque, necesitas un método persistente que indique a GRUB qué entrada usar siempre, sin preguntarte en cada inicio.

Listar todos los kernels que GRUB2 conoce

Para poder fijar un kernel por defecto de forma fiable, primero debes saber qué entradas de menú tiene GRUB2 realmente configuradas. No basta con mirar los paquetes instalados, porque las posiciones en el menú pueden cambiar al añadir o quitar kernels.

GRUB2 genera su menú principal en el archivo /boot/grub/grub.cfg. Aunque no es recomendable editarlo a mano (se sobreescribe cuando ejecutas update-grub), sí puedes leerlo para extraer información. Un comando muy práctico para listar las entradas es:

grep -Ei ‘submenu|menuentry ‘ /boot/grub/grub.cfg | sed -re «s/(.? )'(+)’.*/\1 \2/»

Este comando te devolverá un listado de todas las entradas y submenús que aparecen en el arranque, algo similar a:

menuentry Ubuntu
submenu Advanced options for Ubuntu
menuentry Ubuntu, with Linux 6.7.0-15-generic
menuentry Ubuntu, with Linux 6.7.0-15-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-94-generic
menuentry Ubuntu, with Linux 5.15.0-94-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-92-generic
menuentry Ubuntu, with Linux 5.15.0-92-generic (recovery mode)
menuentry Memory test (memtest86+.elf)
menuentry Memory test (memtest86+.bin, serial console)
menuentry MS-DOS 5.x/6.x/Win3.1 (on /dev/sdf1)

La primera entrada suele ser «Ubuntu» con el kernel más moderno, y dentro del submenú «Advanced options» aparecen todas las versiones instaladas, ordenadas de más nueva a más antigua. En nuestro ejemplo, si te interesa arrancar siempre con Ubuntu, with Linux 5.15.0-94-generic, esa entrada estaría en el submenú avanzado, no en el menú principal.

Listado de entradas de GRUB2

Establecer un kernel específico por posición en el menú (GRUB_DEFAULT índices)

Una forma clásica de fijar qué kernel quiere arrancar GRUB2 por defecto es indicarle el índice (posición) de la entrada, o incluso una combinación «submenú > entrada» cuando la versión deseada está dentro de «Advanced options for Ubuntu».

El archivo que controla esto es /etc/default/grub. Antes de tocarlo, es muy recomendable hacer una copia de seguridad rápida por si necesitas volver atrás de forma sencilla. Puedes hacerlo con:

sudo cp /etc/default/grub /etc/default/grub.bak

A continuación, edítalo con tu editor favorito, por ejemplo con Nano:

sudo nano /etc/default/grub

Dentro verás una línea como GRUB_DEFAULT=0, que indica que se usará la primera entrada del menú principal (índice cero). Si tu kernel deseado está dentro del submenú «Advanced options», puedes decirle a GRUB que entre en ese submenú y seleccione una posición concreta usando la notación submenú>entrada.

Siguiendo el ejemplo de antes, si «Advanced options for Ubuntu» fuese la opción 1 del menú principal y dentro de ese submenú «Ubuntu, with Linux 5.15.0-94-generic» fuese la tercera opción (contando desde cero y saltando modos recovery), podrías escribir algo como:

GRUB_DEFAULT=»1>3″

La lógica es sencilla pero hay que tener ojo con los índices: el primer nivel se refiere a la posición del submenú en el menú principal y el segundo a la posición de la entrada dentro de ese submenú. Además, recuerda que las entradas de «recovery mode» suelen intercalarse, de forma que las opciones normales usan números impares y las de recuperación, pares.

Una vez hayas cambiado GRUB_DEFAULT, guarda el archivo (en Nano, Ctrl+O y luego Ctrl+X) y aplica los cambios regenerando la configuración de GRUB con:

sudo update-grub

Tras esto, reinicia el sistema con sudo reboot y, una vez arranque, verifica qué kernel se ha cargado con:

uname -a

El resultado debería mostrarte, por ejemplo, Linux ... 5.15.0-94-generic ... indicando que ahora estás usando la versión que fijaste mediante los índices en GRUB_DEFAULT.

Usar el nombre de la entrada de menú en lugar de índices (modo «saved»)

El método de los índices tiene un problema importante: las posiciones cambian cuando instalas o desinstalas kernels. Eso significa que una actualización de núcleo puede hacer que tu 1>3 deje de apuntar al kernel correcto, justo lo que quieres evitar si buscas estabilidad a largo plazo.

  Arreglar Monitores Que Se Apagan Después Del Arranque

GRUB2 ofrece una alternativa mucho más robusta: usar el nombre exacto de la entrada del menú como elemento por defecto. De esta forma, mientras esa entrada exista en grub.cfg, seguirá selecciándose aunque se añadan versiones nuevas por encima o por debajo en el listado.

La idea general es esta: primero localizas el nombre completo de la entrada de menú que quieres, tal y como aparece en /boot/grub/grub.cfg (por ejemplo Ubuntu, with Linux 6.8.0-60-generic), y luego configuras GRUB para que la use como saved_entry predeterminada.

Para buscar el nombre exacto, puedes abrir el archivo de configuración con un editor o visor, por ejemplo:

sudo nano /boot/grub/grub.cfg

Una vez dentro, usa Ctrl+W en Nano para buscar la cadena correspondiente a la versión del kernel que te interesa (por ejemplo «6.8.0-60-generic»). En la línea de menuentry verás el título completo, algo como:

menuentry 'Ubuntu, with Linux 6.8.0-60-generic' ...

Ahora, en lugar de jugar con índices, puedes decirle a GRUB que use ese nombre como selección guardada. El procedimiento típico pasa por ejecutar comandos como los siguientes:

sudo grub-set-default «Ubuntu, with Linux 6.8.0-60-generic»

Este comando define la entrada indicada como la que se debe considerar «por defecto guardado». Para confirmar que se ha aplicado correctamente, puedes revisar el archivo de entorno de GRUB:

sudo grub-editenv list

Deberías ver una línea del estilo:

saved_entry=Ubuntu, with Linux 6.8.0-60-generic

También es posible que, dependiendo de la configuración previa, se esté usando la opción GRUB_DEFAULT=saved en /etc/default/grub, lo que indica a GRUB que utilice siempre el último saved_entry establecido. En cualquier caso, mientras el saved_entry coincida con tu kernel deseado, seguirás arrancando esa versión automáticamente.

Después de aplicar estos cambios, regenera el archivo de configuración con sudo update-grub, reinicia el sistema y confirma de nuevo con uname -a que has arrancado con la versión definida como predeterminada.

Configurar GRUB2 con kernel guardado

Cambiar de kernel en Ubuntu a una versión concreta (instalar y bajar de versión)

En muchos casos no sólo quieres elegir un kernel ya instalado, sino pasar de tu versión actual a otra específica, bien porque tu aplicación lo exige, porque un driver solo soporta determinada serie, o porque una actualización reciente te ha roto medio sistema.

El primer paso siempre debe ser saber qué kernel estás ejecutando ahora mismo. Para ello puedes usar comandos como:

uname -r

o bien:

uname -a

que devolverán algo del estilo:

Linux web 6.8.0-85-generic #85~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux

Una vez sepas dónde estás, el siguiente paso es ver qué kernels están disponibles en los repositorios. En entornos Ubuntu/Debian, esto suele hacerse consultando los paquetes linux-image del repositorio, filtrando por la versión que te interesa. Una vez localizada la versión concreta, puedes instalarla directamente con apt o compilarla tú mismo (ver cómo buscar configuraciones en make menuconfig), según prefieras.

Por ejemplo, si quieres bajar de 6.8.0-85-generic a 6.8.0-60-generic, instalarías el paquete correspondiente con el comando adecuado, confirmando con «S» cuando apt te pregunte si deseas continuar con la instalación. Tras completarse el proceso, tendrás ya esa versión de kernel disponible para el arranque, aunque GRUB seguirá escogiendo la más nueva hasta que cambies la configuración como hemos explicado.

Después de instalar el kernel deseado, reinicia el equipo para poder asignarlo como predeterminado con alguno de los métodos anteriores (por índice o por nombre), según te resulte más cómodo y robusto para tu caso.

Establecer un kernel concreto del submenú «Advanced options» como predeterminado

En distribuciones como Ubuntu 22 y 24, cuando se añade una versión de kernel inferior a la actual, esa versión no se coloca como entrada principal, sino que se incorpora al submenú Advanced options for Ubuntu. Por eso, aunque instales una versión 6.8.0-60 por debajo de una 6.8.0-85, al reiniciar seguirás arrancando con la 85.

Para que GRUB2 seleccione automáticamente la versión que quieras del submenú, debes conocer en qué posición exacta se encuentra. De nuevo, el comando que lista los menuentry y submenu te ayuda a ver la estructura y el orden numérico que utilizará GRUB.

  Cómo tomar capturas o grabar la pantalla en VMware: guía completa

Imagina que tras ejecutar el comando de listado descubres que tu kernel objetivo (por ejemplo «Ubuntu, with Linux 6.8.0-60-generic») aparece en la cuarta posición del submenú «Advanced options» y que dicho submenú es el primero después de la entrada principal. En ese caso, la combinación de índices, empezando a contar desde cero, sería la 1>2 (submenú en posición 1, entrada en posición 2 dentro de ese submenú).

En el archivo /etc/default/grub, cambiarías entonces la línea:

GRUB_DEFAULT=0

por:

GRUB_DEFAULT=»1>2″

Tras guardar los cambios y ejecutar sudo update-grub, la próxima vez que arranques se seleccionará de forma automática ese kernel concreto dentro de «Advanced options», sin necesidad de que entres manualmente en el submenú cada vez.

Después del reinicio puedes verificar que todo ha ido bien con uname -r o uname -a, comprobando que la versión activa del kernel es la que has fijado a través de GRUB_DEFAULT.

Edición de configuración de GRUB2

Desinstalar kernels HWE y edge y volver a la rama estable

Una vez que has conseguido arrancar el sistema con un kernel estable de la rama linux-generic (por ejemplo, una serie 5.15.x en Ubuntu 22.04 LTS), el siguiente paso lógico si los kernels HWE o edge te han dado problemas es limpiar esas ramas del sistema.

Para desinstalar los metapaquetes de HWE, puedes utilizar apt purge con un comodín que abarque la rama completa, algo así como:

sudo apt purge linux-generic-hwe-22.04*

Después de eliminar esos metapaquetes, probablemente querrás borrar también las imágenes de núcleos modernos que ya no te interesan. Si, por ejemplo, quieres librarte de todos los kernels superiores a 6.x en favor de la serie 5.x, podrías usar un comando del estilo:

sudo apt purge linux-image-6*

Este tipo de purga elimina los paquetes de imagen de kernel cuyo nombre empieza por «linux-image-6», así que conviene revisar con cuidado lo que se va a desinstalar antes de confirmar. No olvides que debes conservar al menos una rama estable funcional, normalmente linux-generic, porque sin ella el sistema podría quedarse sin núcleos arrancables.

Tras cualquier limpieza de kernels, es fundamental actualizar la configuración de GRUB para que deje de referenciar entradas que ya no existen. De lo contrario, podrías encontrarte con opciones de menú que apuntan a kernels borrados. Para regenerar el archivo de configuración usa:

sudo update-grub

Si quieres asegurarte de que la rama genérica sigue instalada, puedes forzar su instalación con:

sudo apt install linux-generic

En la mayoría de casos te dirá que ya está instalada, pero de este modo verificas que el metapaquete existe y que se seguirá recibiendo actualizaciones de seguridad y correcciones sobre esa serie estable.

Como último paso, si habías cambiado GRUB_DEFAULT a un índice o a un nombre concreto para sobrevivir a los problemas con HWE/edge, puedes devolverlo a su valor por defecto (normalmente 0) editando de nuevo /etc/default/grub:

sudo nano /etc/default/grub

Y dejando la línea como:

GRUB_DEFAULT=»0″

Después guarda, ejecuta sudo update-grub y reinicia con sudo reboot para que el sistema arranque ya de forma normal con el último kernel de la rama linux-generic que tengas instalado.

Al final, controlar qué kernel arranca mediante GRUB2 se convierte en una herramienta fundamental para cualquier usuario de Ubuntu, Debian o derivadas que no quiera vivir al albur de la última actualización. Combinando la instalación de versiones concretas, el uso de «Advanced options», la selección por índice o por nombre de menú y la limpieza de ramas problemáticas, puedes adaptar el núcleo del sistema a tus necesidades reales: estabilidad férrea en servidores, compatibilidad máxima en equipos modernos o una mezcla calculada de ambas cosas en entornos de escritorio donde no te quieres jugar el día a día a un kernel experimental.

no muestra el menú GRUB al cambiar GRUB_TIMEOUT=
Artículo relacionado:
GRUB no muestra el menú tras cambiar GRUB_TIMEOUT: causas y solución definitiva