Gestión de kernels en Ubuntu: listar, actualizar, eliminar y cambiar

Error común después de actualizar el kernel: NVIDIA-SMI no puede comunicarse con el driver

Después de reiniciar un sistema Ubuntu, al ejecutar el comando nvidia-smi para monitorear las GPUs, puede aparecer el error "NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver". Este problema ocurre frecuentemente cuando el kernel del sistema se actualiza y la nueva versión es incompatible con los drivers de NVIDIA previamente instalados.

Acerca del Kernel de Linux

El kernel constituye el nivel más bajo del software del sistema operativo, actuando como interfaz entre el hardware y las aplicaciones. Es responsable de traduce las solicitudes de los programas en intsrucciones que el hardware puede ejecutar, además de gestionar la comunicación entre procesos mediante mecanismos de IPC.

Procedimiento para utilizar una versión anterior del kernel

  1. Listar todos los kernels instalados

dpkg --list | grep linux-image

  1. Identificar el kernel actualmente en uso

Opción mediante el comando uname:

uname -r

Alternativamente, consultando el sistema de archivos virtual:

cat /proc/version

El directorio /proc contiene archivos virtuales con información del sistema, incluyendo datos sobre memoria, núcleos de CPU, sistemas de archivosmontados, y la versión del kernel en ejecución.

  1. Eliminar un kernel específico

Advertencia: Al eliminar el kernel activo, el sistema utilizará automáticamente la versión anterior disponible. Si se elimina el único kernel existente, el sistema no arrancó y mostrará la interfaz BIOS.

sudo apt remove linux-image-5.15.0-52-generic

Limpieza automática de paquetes huérfanos:

sudo apt autoremove

Tras ejecutar estos comandos, el kernel eliminado aparecerá con estado "deinstall" en el listado de paquetes.

Caso especial:

En algunas situaciones es necesario eliminar también las versiones unsigned del mismo kernel, ya que el sistema puede intercambiarlas automáticamente:

sudo apt remove linux-image-5.15.0-53-generic linux-image-unsigned-5.15.0-53-generic

A continuación se muestra un ejemplo del proceso de eliminación:

usuario@servidor:~$ dpkg --list | grep linux-image
linux-image-5.15.0-52-generic                   install
linux-image-5.15.0-53-generic                   install
linux-image-5.8.0-43-generic                    deinstall
linux-image-unsigned-5.15.0-53-generic          deinstall

usuario@servidor:~$ sudo apt remove linux-image-5.15.0-53-generic
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
linux-image-5.15.0-53-generic
The following NEW packages will be installed:
linux-image-unsigned-5.15.0-53-generic
0 upgraded, 1 newly installed, 1 to remove and 185 not upgraded.
After this operation, 447 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
I: /boot/vmlinuz is now a symlink to vmlinuz-5.15.0-52-generic
I: /boot/initrd.img is now a symlink to initrd.img-5.15.0-52-generic
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-52-generic
Found initrd image: /boot/initrd.img-5.15.0-52-generic
done

  1. Verificar el orden de arranque de los kernels

grep menuentry /boot/grub/grub.cfg

Nota: Si la configuración de Grub se daña, se puede recuperar escribiendo normal en el prompt de emergencia de Grub.

  1. Configurar el kernel predeterminado al iniciar

Para establecer un kernel específico como predeterminado, es necesario modificar el archivo de configuración de Grub y seleccionar la entrada correspondiente.

  1. Desactivar actualizaciones automáticas del sistema

Método mediante línea de comandos:

Editar el archivo de configuración de actualizaciones periódicas:

sudo vim /etc/apt/apt.conf.d/10periodic

Establecer todos los valores a "0":

APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "0";

Método gráfico:

Acceder a "Software y Actualizaciones" desde el menú del sistema y desactivar las actualizaciones automáticas.

Bloqueo del kernel actual:

Para evitar que el kernel se actualice automáticamente y mantener la compatibilidad con los drivers de NVIDIA instalados:

sudo apt-mark hold linux-image-5.15.0-48-generic

Para desbloquear y permitir actualizaciones futuras:

sudo apt-mark unhold linux-image-5.15.0-48-generic

Recomendación: Para mayor seguridad, se sugiere aplicar ambos métodos de bloqueo de actualizaciones, ya que en algunas circunstancias uno solo podría no ser suficiente.

Etiquetas: Ubuntu Kernel linux GRUB nvidia

Publicado el 7-1 19:03