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
- Listar todos los kernels instalados
dpkg --list | grep linux-image
- 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.
- 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
- 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.
- 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.
- 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.