15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
26.12.2023

Actualización del Kernel de Linux: Una Guía Completa Distribución por Distribución

El kernel de Linux es la capa fundamental entre su hardware y cada proceso que se ejecuta en su sistema. Gestiona la programación de CPU, la asignación de memoria, los controladores de dispositivos, las llamadas al sistema y la aplicación de seguridad. Mantenerlo actualizado no es opcional para los sistemas en producción — los kernels desactualizados exponen los servidores a exploits de escalada de privilegios, vulnerabilidades de corrupción de memoria y regresiones de rendimiento que las versiones más nuevas resuelven.

Esta guía proporciona instrucciones exhaustivas y técnicamente precisas para actualizar el kernel de Linux en Ubuntu, Debian, CentOS, RHEL y Arch Linux — incluyendo la configuración del gestor de arranque, la regeneración de initramfs, el anclaje de versiones y los procedimientos de reversión que la mayoría de las guías omiten por completo.

Por qué las actualizaciones del kernel son una tarea de mantenimiento crítica

Cada versión del kernel aborda una combinación de parches de seguridad (CVEs), mejoras de compatibilidad de hardware, optimizaciones del planificador y nuevas capacidades de sistema de archivos o red. Las consecuencias de ejecutar un kernel obsoleto incluyen:

  • CVEs sin parchear: Vulnerabilidades como Dirty COW (CVE-2016-5195), las mitigaciones de Spectre/Meltdown y errores de escalada de privilegios más recientes son problemas a nivel del kernel que ninguna herramienta de seguridad a nivel de aplicación puede compensar completamente.
  • Degradación del rendimiento: Los kernels más antiguos carecen de mejoras en el planificador CFS, la compactación de memoria y el manejo de profundidad de cola NVMe que afectan directamente al rendimiento del servidor.
  • Incompatibilidad de controladores: El hardware nuevo, incluidos los controladores NVMe modernos y los adaptadores de red, puede requerir versiones del kernel que expongan interfaces de controladores actualizadas.
  • Soporte de llamadas al sistema faltante: Los entornos de ejecución de contenedores (Docker, Podman, containerd) y los marcos de seguridad (eBPF, seccomp) dependen de características del kernel introducidas en versiones específicas.

En un entorno de VPS Hosting, el kernel también gobierna la eficiencia con la que el sistema operativo invitado interactúa con el hipervisor — lo que significa que un kernel actualizado con controladores virtio al día y soporte de paravirtualización se traduce directamente en menor latencia y mejor rendimiento de I/O.

Antes de comenzar: lista de verificación previa a la actualización

Independientemente de la distribución, ejecute estos pasos antes de tocar el kernel:

  1. Tome una instantánea o copia de seguridad de su sistema. Si su proveedor admite instantáneas, tome una ahora. En hardware físico, asegúrese de que su copia de seguridad esté actualizada.
  2. Verifique su versión actual del kernel: uname -r
  3. Verifique el espacio disponible en disco en /boot: df -h /boot — una partición /boot llena fallará silenciosamente en las instalaciones del kernel en sistemas basados en Debian.
  4. Confirme su gestor de arranque: ls /boot | grep -E 'grub|efi' — saber si usa GRUB2, systemd-boot o GRUB legacy cambia los pasos posteriores a la instalación.
  5. Verifique los paquetes retenidos o anclados: En Debian/Ubuntu, ejecute apt-mark showhold. En RHEL/CentOS, verifique /etc/yum.conf para exclude=kernel*.
  6. Tenga acceso a la consola listo. Si el nuevo kernel no arranca, SSH no estará disponible. Asegúrese de tener acceso fuera de banda (VNC, IPMI o la consola de emergencia de su proveedor) antes de reiniciar.

Actualización del kernel en Ubuntu y Debian

Ubuntu y Debian usan el gestor de paquetes APT y distribuyen imágenes del kernel como paquetes estándar bajo la convención de nomenclatura linux-image-*. El kernel, sus módulos y el initramfs se gestionan todos a través de este sistema, lo que hace que las actualizaciones sean relativamente sencillas — pero hay matices importantes.

Paso 1: Sincronizar los repositorios de paquetes

sudo apt update

Esto actualiza el índice de paquetes local contra todos los repositorios configurados. No omita este paso — ejecutar apt upgrade sin un apt update previo puede instalar versiones de paquetes desactualizadas.

Paso 2: Aplicar actualización completa del sistema

sudo apt upgrade

Esto actualiza los paquetes instalados pero no instalará un nuevo kernel si requiere eliminar paquetes existentes. Para transiciones de kernel (por ejemplo, pasar de 5.15 a 6.1), use:

sudo apt full-upgrade

El comando antiguo dist-upgrade es funcionalmente equivalente a full-upgrade y sigue disponible, pero full-upgrade es la forma canónica actual.

Paso 3: Instalar el metapaquete del kernel

sudo apt install linux-image-generic linux-headers-generic

El metapaquete (linux-image-generic) siempre rastrea el último kernel recomendado para su arquitectura. Instalarlo explícitamente garantiza que el gestor de paquetes sepa que desea actualizaciones del kernel en el futuro. El paquete linux-headers-generic es necesario si compila módulos del kernel externos (por ejemplo, controladores gestionados por DKMS como ZFS o controladores GPU propietarios).

Para sistemas Ubuntu, también puede instalar kernels HWE (Hardware Enablement), que retroportan kernels más nuevos a versiones LTS:

sudo apt install linux-generic-hwe-22.04

Paso 4: Verificar que el nuevo kernel está preparado

dpkg --list | grep linux-image

Debería ver la nueva versión del kernel listada con estado ii (instalado). El kernel antiguo permanece instalado como respaldo — esto es intencional.

Paso 5: Reiniciar y confirmar

sudo reboot

Después de reconectarse:

uname -r

Confirme que la salida refleja la nueva versión del kernel.

Limpieza de kernels antiguos en Debian/Ubuntu

Los kernels antiguos se acumulan en /boot y consumen espacio en disco. Elimínelos de forma segura con:

sudo apt autoremove --purge

APT identifica automáticamente los paquetes del kernel reemplazados y los elimina, pero solo si no son el kernel en ejecución actual o el respaldo más reciente.

Advertencia crítica: Nunca elimine manualmente el paquete del kernel en ejecución actual. Siempre reinicie en el nuevo kernel primero, luego ejecute autoremove.

Actualización del kernel en CentOS y RHEL

CentOS y RHEL usan gestión de paquetes basada en RPM — ya sea yum (CentOS 7, RHEL 7) o dnf (CentOS 8+, RHEL 8+, AlmaLinux, Rocky Linux). El proceso de actualización del kernel difiere de los sistemas basados en Debian en un aspecto importante: los sistemas RPM mantienen múltiples versiones del kernel instaladas simultáneamente de forma predeterminada, controlado por la directiva installonly_limit en /etc/yum.conf o /etc/dnf/dnf.conf.

Paso 1: Actualizar todos los paquetes incluyendo el kernel

# CentOS 7 / RHEL 7
sudo yum update

# CentOS 8+ / RHEL 8+ / AlmaLinux / Rocky Linux
sudo dnf update

Este único comando maneja la actualización del kernel en la mayoría de los casos. A diferencia de Debian, no hay un equivalente separado de dist-upgradeyum update / dnf update maneja la resolución de dependencias para las transiciones del kernel automáticamente.

Paso 2: Instalar una versión específica del kernel (opcional)

Si necesita una versión específica del kernel en lugar de la última disponible:

sudo yum install kernel-<version>
# Example:
sudo yum install kernel-5.14.0-284.30.1.el9_2

Paso 3: Regenerar la configuración de GRUB2

En sistemas RHEL/CentOS, la configuración del gestor de arranque debe regenerarse explícitamente para incluir la nueva entrada del kernel. El comando correcto depende de si su sistema usa BIOS o UEFI:

Sistemas basados en BIOS:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Sistemas basados en UEFI:

sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
# or for CentOS/AlmaLinux/Rocky:
sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

Importante: En RHEL 8+ y derivados, el paso grub2-mkconfig a menudo es manejado automáticamente por los scriptlets del paquete kernel-core a través de grubby. Puede verificar la entrada de arranque predeterminada con:

sudo grubby --default-kernel

Para establecer manualmente el kernel predeterminado:

sudo grubby --set-default /boot/vmlinuz-<new-version>

Paso 4: Reiniciar y verificar

sudo reboot
uname -r

Gestión de la retención del kernel en RHEL/CentOS

De forma predeterminada, installonly_limit=3 en /etc/dnf/dnf.conf mantiene los tres kernels más recientes. Ajuste este valor si el espacio en disco en /boot es limitado:

sudo sed -i 's/installonly_limit=3/installonly_limit=2/' /etc/dnf/dnf.conf

Para listar todos los kernels instalados:

rpm -q kernel

Actualización del kernel en Arch Linux

Arch Linux sigue un modelo de lanzamiento continuo, lo que significa que el kernel se actualiza continuamente a medida que se lanzan nuevas versiones upstream. No hay versiones discretas — el sistema siempre avanza hacia el último kernel estable. Esto hace que Arch sea ideal para desarrolladores que necesitan características de kernel de vanguardia, pero requiere un mantenimiento más atento.

Paso 1: Sincronización completa del sistema y actualización

sudo pacman -Syu

El indicador -S sincroniza los paquetes, -y actualiza la base de datos y -u actualiza todos los paquetes instalados. En Arch, siempre debe realizar una actualización completa del sistema en lugar de actualizar paquetes individuales de forma aislada — las actualizaciones parciales no están explícitamente soportadas y pueden causar roturas de dependencias de bibliotecas.

Paso 2: Instalar o reinstalar el paquete del kernel

Si el kernel no fue actualizado por pacman -Syu (por ejemplo, está cambiando de variante de kernel), instálelo explícitamente:

sudo pacman -S linux linux-headers

Arch Linux ofrece múltiples variantes oficiales del kernel:

Paquete del kernelDescripción
linuxKernel estable, última versión upstream
linux-ltsKernel de soporte a largo plazo, actualizaciones conservadoras
linux-hardenedKernel reforzado en seguridad con parches adicionales
linux-zenOptimizado para cargas de trabajo de escritorio/interactivas

Para entornos de servidor, linux-lts es generalmente preferible — proporciona un ABI estable para los módulos DKMS y reduce la frecuencia de reinicios requeridos por las actualizaciones del kernel.

Paso 3: Regenerar el initramfs

sudo mkinitcpio -p linux

Esto regenera el sistema de archivos RAM inicial usando el preset definido en /etc/mkinitcpio.d/linux.preset. El initramfs contiene el entorno mínimo necesario para montar el sistema de archivos raíz antes de que el sistema operativo completo tome el control. Omitir este paso después de una actualización del kernel puede resultar en un sistema que no arranca si el sistema de archivos raíz requiere un módulo (por ejemplo, ext4, btrfs, o un volumen cifrado a través de dm-crypt).

Si instaló linux-lts, use el preset correspondiente:

sudo mkinitcpio -p linux-lts

Paso 4: Actualizar la configuración del gestor de arranque GRUB

sudo grub-mkconfig -o /boot/grub/grub.cfg

Tenga en cuenta que en Arch, el comando es grub-mkconfig (sin el sufijo 2), a diferencia de RHEL/CentOS. Si usa systemd-boot en lugar de GRUB (común en instalaciones Arch con UEFI), actualice la entrada de arranque manualmente o ejecute:

sudo bootctl update

Paso 5: Reiniciar

sudo reboot
uname -r

Comparación de distribuciones: mecanismos de actualización del kernel

CaracterísticaUbuntu/DebianCentOS/RHELArch Linux
Gestor de paquetesAPT (apt)YUM / DNFPacman
Modelo de lanzamientoLanzamientos fijos (LTS/estándar)Lanzamientos fijos (versiones principales)Lanzamiento continuo
Metapaquete del kernellinux-image-generickernellinux, linux-lts
Actualización del gestor de arranque requeridaAutomática (a través de scripts postinst)Manual (grub2-mkconfig o grubby)Manual (grub-mkconfig)
Regeneración de initramfsAutomática (update-initramfs)Automática (a través de dracut)Manual (mkinitcpio)
Múltiples kernels retenidosSí (autoremove limpia los antiguos)Sí (controlado por installonly_limit)Sí (todas las variantes instaladas se mantienen)
Opción de kernel LTSSí (pila HWE)Sí (canales EUS en RHEL)Sí (paquete linux-lts)
Mecanismo de reversiónMenú GRUB al arrancarMenú GRUB al arrancarMenú GRUB al arrancar

Reversión del kernel: qué hacer cuando un nuevo kernel rompe su sistema

Una actualización del kernel que causa fallos de arranque o incompatibilidad de hardware es un riesgo operativo real. Aquí está el procedimiento de recuperación:

Paso 1: Acceda al menú GRUB al arrancar. Si GRUB está oculto (común en entornos VPS), mantenga presionado o presione repetidamente Shift (BIOS) o Esc (UEFI) durante el arranque, o configure GRUB_TIMEOUT en /etc/default/grub a un valor distinto de cero antes de actualizar.

Paso 2: Seleccione “Opciones avanzadas” y elija la versión anterior del kernel de la lista.

Paso 3: Una vez arrancado en el kernel que funciona, ya sea:

  • Ancle el kernel que funciona para evitar su eliminación (Debian/Ubuntu: sudo apt-mark hold linux-image-<version>)
  • Establézcalo como entrada de arranque predeterminada (RHEL: sudo grubby --set-default /boot/vmlinuz-<version>)
  • Elimine el kernel problemático (Arch: sudo pacman -R linux seguido de reinstalar la variante LTS)

Paso 4: Presente un informe de error al equipo del kernel de su distribución o consulte los rastreadores de errores del kernel upstream antes de volver a intentar la actualización.

Actualizaciones del kernel en entornos contenerizados y virtualizados

En un entorno de VPS Hosting, el proceso de actualización del kernel tiene una consideración adicional: está actualizando el kernel invitado, no el kernel del hipervisor anfitrión. Esto es estándar y esperado — el sistema operativo invitado ejecuta su propio kernel en un contexto paravirtualizado o completamente virtualizado.

Sin embargo, en plataformas VPS basadas en contenedores (OpenVZ, LXC sin espacio de nombres del kernel), el invitado puede compartir el kernel del anfitrión. En estos casos, uname -r refleja la versión del kernel del anfitrión, y intentar instalar un nuevo paquete del kernel dentro del contenedor no cambiará el kernel en ejecución — aunque la instalación del paquete en sí es inofensiva.

En infraestructura VPS basada en KVM (que es el estándar para los proveedores modernos), tiene control total del kernel. Asegúrese de que su kernel actualizado incluya los controladores virtio compilados o disponibles como módulos — específicamente virtio_net, virtio_blk y virtio_scsi — para mantener la conectividad de red y almacenamiento después del reinicio.

Para cargas de trabajo que requieren máximo rendimiento de I/O sin procesar — como servidores de bases de datos o pipelines de inferencia de ML — considere combinar las actualizaciones del kernel con un entorno de Servidores Dedicados donde tiene control total del hardware y sin sobrecarga del hipervisor.

Avanzado: instalación de kernels mainline o personalizados

Para usuarios que necesitan características del kernel que aún no han sido retroportadas al kernel estable de su distribución, los kernels mainline se pueden instalar desde el código fuente o a través de herramientas específicas de la distribución.

Instalador de kernel mainline de Ubuntu:

# Using the mainline tool (third-party PPA)
sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline
mainline install-latest

Compilación desde el código fuente (todas las distribuciones):

# Download from kernel.org
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.x.y.tar.xz
tar -xf linux-6.x.y.tar.xz
cd linux-6.x.y
cp /boot/config-$(uname -r) .config
make olddefconfig
make -j$(nproc)
sudo make modules_install
sudo make install

Compilar desde el código fuente le da un control preciso sobre la configuración del kernel — habilitando o deshabilitando subsistemas específicos, aplicando parches personalizados o habilitando características experimentales. Esto es particularmente relevante para cargas de trabajo de GPU Hosting donde pueden ser necesarios parámetros personalizados del kernel para la compatibilidad del controlador NVIDIA o la configuración de IOMMU.

Automatización de las actualizaciones del kernel de forma segura

Las actualizaciones del kernel desatendidas son una capacidad de doble filo. Reducen la ventana de exposición a CVEs conocidos pero introducen el riesgo de un reinicio desatendido en un estado de kernel roto.

Ubuntu/Debian — unattended-upgrades:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

Edite /etc/apt/apt.conf.d/50unattended-upgrades para incluir o excluir paquetes del kernel:

Unattended-Upgrade::Package-Blacklist {
    // "linux-image";  // Uncomment to exclude kernel updates
};

RHEL/CentOS — dnf-automatic:

sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer

Configure /etc/dnf/automatic.conf para establecer apply_updates = yes solo después de validar su estrategia de reversión.

Mejor práctica para producción: Aplique las actualizaciones de seguridad del kernel automáticamente, pero controle los reinicios a través de una ventana de mantenimiento usando herramientas como needrestart o kured (Kubernetes Reboot Daemon para cargas de trabajo contenerizadas).

Matriz de decisión y conclusiones clave

Use esta lista de verificación antes y después de cada actualización del kernel:

  • Instantánea o copia de seguridad completada antes de comenzar
  • Versión actual del kernel documentada (uname -r)
  • La partición /boot tiene suficiente espacio libre (df -h /boot)
  • Acceso a consola/fuera de banda confirmado y probado
  • Tiempo de espera de GRUB establecido a un valor distinto de cero para permitir el arranque de recuperación
  • Nuevo kernel instalado y verificado en el gestor de paquetes
  • initramfs regenerado (crítico en Arch; verificar en todas las distribuciones)
  • Configuración de GRUB regenerada donde sea necesario (RHEL, Arch)
  • Sistema reiniciado y nueva versión del kernel confirmada (uname -r)
  • Paquetes del kernel antiguo limpiados después de confirmar la estabilidad
  • Versión del kernel documentada en el registro de cambios o sistema de monitoreo
  • Para módulos DKMS (ZFS, controladores propietarios): módulos reconstruidos y verificados

Cuándo usar kernels LTS vs. el último estable:

  • Servidores de bases de datos en producción, servidores web, infraestructura de correo electrónico: Use kernels LTS. La estabilidad y un ABI predecible para los módulos del kernel superan el acceso a las características más nuevas. Si ejecuta pilas de Email Hosting o Shared Web Hosting, LTS es la elección correcta.
  • Entornos de desarrollo, nodos de cómputo GPU, redes de borde: Use el último kernel estable para acceder a nuevas capacidades de eBPF, algoritmos de planificador actualizados y soporte de hardware actual.
  • Entornos críticos de seguridad: Considere linux-hardened (Arch) o RHEL con parches en vivo del kernel (kpatch) para aplicar correcciones de CVE sin reiniciar.

Para entornos donde la terminación SSL/TLS y la gestión de certificados son parte del stack, tenga en cuenta que el soporte de TLS a nivel del kernel (ktls) — disponible en kernels 4.13+ — puede descargar el cifrado de registros TLS al kernel, reduciendo la sobrecarga de CPU. Combínelo con Certificados SSL correctamente gestionados para una postura de seguridad completa.

Preguntas frecuentes

P: ¿La actualización del kernel romperá mis aplicaciones en ejecución?

R: La actualización del kernel en sí no afecta a los procesos en ejecución — continúan usando el kernel antiguo hasta el reinicio. Después de reiniciar en el nuevo kernel, las aplicaciones que dependen de módulos del kernel compilados contra la versión anterior (por ejemplo, módulos DKMS como ZFS o VirtualBox) pueden fallar al cargarse. Siempre verifique el estado del módulo DKMS con dkms status antes de reiniciar.

P: ¿Cómo puedo verificar qué versión del kernel está disponible antes de instalarla?

R: En Debian/Ubuntu: apt-cache show linux-image-generic | grep Version. En RHEL/CentOS: dnf info kernel. En Arch: pacman -Si linux | grep Version. Esto le permite evaluar la actualización antes de comprometerse.

P: ¿Puedo actualizar el kernel en un VPS sin acceso a la consola?

R: Técnicamente sí, pero es muy desaconsejable. Si el nuevo kernel no arranca, perderá el acceso SSH sin ninguna ruta de recuperación. Siempre confirme que su proveedor de VPS ofrece una consola de emergencia (VNC o serial) antes de realizar actualizaciones del kernel de forma remota.

P: ¿Cuál es la diferencia entre apt upgrade y apt full-upgrade para las actualizaciones del kernel?

R: apt upgrade no instalará un nuevo kernel si hacerlo requiere eliminar algún paquete actualmente instalado. apt full-upgrade (anteriormente dist-upgrade) resuelve estos conflictos permitiendo la eliminación de paquetes según sea necesario — esto generalmente se requiere al hacer la transición entre versiones principales del kernel en Debian/Ubuntu.

P: ¿Cómo puedo evitar que una versión específica del kernel se actualice automáticamente?

R: En Debian/Ubuntu, use sudo apt-mark hold linux-image-<version>. En RHEL/CentOS, agregue exclude=kernel-<version> a /etc/dnf/dnf.conf o use dnf versionlock add kernel-<version> después de instalar el paquete python3-dnf-plugin-versionlock. En Arch, agregue el paquete a IgnorePkg en /etc/pacman.conf.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar