Instalación de Drivers NVIDIA GPU en Linux
Instalar los drivers de NVIDIA correctamente en Linux es el primer paso imprescindible para cualquier carga de trabajo de computación GPU: machine learning, renderizado, simulaciones científicas o inferencia de IA. Los drivers incorrectos o incompatibles con el kernel son la principal fuente de problemas. Esta guía cubre la selección del driver adecuado, la instalación con DKMS para compatibilidad con actualizaciones del kernel, y la verificación completa del entorno.
Requisitos Previos
- Servidor Linux con GPU NVIDIA instalada
- Acceso root o sudo
- Cabeceras del kernel Linux instaladas
- GCC y herramientas de compilación básicas
- Conexión a internet
# Instalar dependencias básicas en Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y build-essential dkms linux-headers-$(uname -r)
# En CentOS/Rocky Linux
sudo dnf install -y kernel-devel kernel-headers gcc make dkms
Identificar la GPU y Seleccionar el Driver
# Identificar la GPU NVIDIA instalada
lspci | grep -i nvidia
# Salida esperada (ejemplo):
# 01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
# Ver más detalles del hardware
lspci -v -s $(lspci | grep -i nvidia | cut -d' ' -f1)
# Verificar si ya hay algún driver NVIDIA cargado
lsmod | grep nvidia
# Ver la versión del kernel actual
uname -r
Versiones de drivers disponibles
- Driver de producción (recomendado): Versión estable más reciente
- Driver legacy: Para GPUs antiguas (series 300, 340, 390, 470)
- Driver de datos/cómputo: Para GPUs Tesla/Quadro sin salida de vídeo
Consulta nvidia.com/drivers para encontrar el driver compatible con tu GPU específica.
Instalación en Ubuntu/Debian
Método 1: ubuntu-drivers (recomendado)
# Instalar la herramienta de detección automática
sudo apt-get install -y ubuntu-drivers-common
# Ver los drivers recomendados para la GPU detectada
ubuntu-drivers devices
# Instalar el driver recomendado automáticamente
sudo ubuntu-drivers autoinstall
# O instalar una versión específica manualmente
sudo apt-get install -y nvidia-driver-535
# Reiniciar el sistema para cargar el driver
sudo reboot
Método 2: Repositorio de NVIDIA
# Añadir el repositorio oficial de NVIDIA
curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nvidia-keyring.gpg] \
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" | \
sudo tee /etc/apt/sources.list.d/nvidia-cuda.list
sudo apt-get update
# Instalar solo el driver (sin CUDA completo)
sudo apt-get install -y cuda-drivers
# Reiniciar
sudo reboot
Añadir PPA de drivers gráficos (para versiones más recientes)
# Añadir el PPA de drivers propietarios
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
# Ver las versiones disponibles
apt-cache search nvidia-driver | grep "^nvidia-driver-"
# Instalar la versión deseada
sudo apt-get install -y nvidia-driver-550
sudo reboot
Instalación en CentOS/Rocky Linux
# Instalar el repositorio EPEL
sudo dnf install -y epel-release
# Instalar el repositorio de NVIDIA para RHEL/CentOS
sudo dnf config-manager --add-repo \
https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
sudo dnf clean all
# Instalar el driver NVIDIA (incluye DKMS)
sudo dnf module install -y nvidia-driver:latest-dkms
# Verificar que DKMS construyó el módulo para el kernel actual
dkms status
# Reiniciar
sudo reboot
Instalación desde el Instalador Oficial de NVIDIA
Para mayor control sobre la versión exacta, puedes usar el instalador .run oficial.
# Deshabilitar el driver nouveau (open source) antes de instalar
# En Ubuntu/Debian:
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
# En CentOS/Rocky:
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
sudo dracut --force
# Reiniciar en modo texto (necesario si hay entorno gráfico)
sudo systemctl set-default multi-user.target
sudo reboot
# Descargar el instalador (reemplaza VERSIÓN con el número real)
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/VERSIÓN/NVIDIA-Linux-x86_64-VERSIÓN.run
# Ejecutar el instalador con soporte DKMS
sudo sh NVIDIA-Linux-x86_64-VERSIÓN.run --dkms
# Aceptar los acuerdos de licencia y las opciones predeterminadas
# El instalador construirá y cargará el módulo del kernel automáticamente
# Volver al entorno gráfico si es necesario
sudo systemctl set-default graphical.target
Configuración Post-Instalación
# Verificar que el módulo NVIDIA está cargado
lsmod | grep nvidia
# Salida esperada:
# nvidia_uvm 1327104 0
# nvidia_drm 73728 0
# nvidia_modeset 1200128 3 nvidia_drm
# nvidia 56369152 108 nvidia_uvm,nvidia_modeset
# Verificar que DKMS instaló el módulo correctamente
dkms status
# Salida esperada: nvidia/535.104.05, 5.15.0-88-generic, x86_64: installed
Configurar la persistencia del driver
# Habilitar el modo de persistencia (recomendado para servidores)
sudo nvidia-persistenced --persistence-mode
# Para que persista entre reinicios, crear el servicio systemd
sudo systemctl enable nvidia-persistenced
sudo systemctl start nvidia-persistenced
Verificación del Driver
# Comando principal de verificación
nvidia-smi
# Salida esperada:
# +-----------------------------------------------------------------------+
# | NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2 |
# |-----------------------------+---------------------+--------------------+
# | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
# | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
# | | | MIG M. |
# |===============================+======================+======================|
# | 0 NVIDIA GeForce RTX 3090 Off| 00000000:01:00.0 Off| N/A |
# | 0% 35C P8 12W / 350W | 530MiB / 24576MiB | 0% Default |
# +-----------------------------------------------------------------------+
# Monitorizar la GPU en tiempo real
watch -n 1 nvidia-smi
# Ver todos los procesos usando la GPU
nvidia-smi pmon
# Listar todas las GPUs disponibles
nvidia-smi -L
# Ver información detallada de la GPU
nvidia-smi -q
# Ver solo la memoria disponible
nvidia-smi --query-gpu=memory.total,memory.used,memory.free --format=csv
Prueba básica de funcionamiento
# Si CUDA está instalado, compilar y ejecutar el ejemplo deviceQuery
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
# El resultado debe terminar con "PASS"
Gestión de Energía y Configuración
# Configurar el modo de rendimiento (para máximo rendimiento en servidores)
sudo nvidia-smi --persistence-mode=1
# Establecer el perfil de rendimiento máximo
sudo nvidia-smi --auto-boost-default=0
sudo nvidia-smi --applications-clocks=1215,1410 # Frecuencias de memoria y GPU
# Ver el estado térmico y de energía
nvidia-smi dmon -s pct # Monitorizar utilización, temperatura, potencia
# Configurar el límite de potencia (ejemplo: 250W)
sudo nvidia-smi --power-limit=250
# Para múltiples GPUs
sudo nvidia-smi --gpu-reset # Reiniciar GPU (útil en producción)
Solución de Problemas
El sistema no arranca después de instalar el driver
# Arrancar en modo recovery o con parámetro nomodeset en GRUB
# Añadir "nomodeset" a la línea de boot en GRUB
# Una vez en el sistema, desinstalar el driver problemático
sudo apt-get purge nvidia-* (Ubuntu/Debian)
sudo dnf remove nvidia-* (CentOS/Rocky)
# Reactivar nouveau temporalmente
sudo rm /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
sudo reboot
nvidia-smi no encuentra la GPU
# Verificar si el módulo está cargado
lsmod | grep nvidia
# Cargar el módulo manualmente
sudo modprobe nvidia
# Si hay error, ver los mensajes del kernel
dmesg | grep -i nvidia | tail -20
DKMS falla al compilar el módulo después de una actualización del kernel
# Ver el estado de DKMS
dkms status
# Recompilar manualmente
sudo dkms remove nvidia/535.104.05 --all
sudo dkms add nvidia/535.104.05
sudo dkms build nvidia/535.104.05
sudo dkms install nvidia/535.104.05
Conflicto con el driver nouveau
# Verificar si nouveau está activo
lsmod | grep nouveau
# Si lo está, bloquearlo definitivamente
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/disable-nouveau.conf
sudo update-initramfs -u
sudo reboot
Conclusión
La instalación correcta de los drivers NVIDIA en Linux con soporte DKMS garantiza que el módulo del kernel se recompile automáticamente en cada actualización del sistema, evitando la pérdida de funcionalidad de la GPU. Con nvidia-smi funcionando y el modo de persistencia activo, el servidor estará listo para instalar CUDA Toolkit y ejecutar cargas de trabajo de machine learning, inferencia de IA o computación científica de alto rendimiento.


