sábado, 27 de julio de 2024

Instalación del driver propietario de NVIDIA en DEBIAN, una distro de GNU/LINUX

Debian 12 es una distribución de GNU/LINUX que es maravillosa. La gente que está detrás de GNU/LINUX tiene una filosofía, que es el software libre en contraposición del software propietario. Debian 12 por defecto, tiene un driver libre para las tarjetas gráficas NVIDIA pero el problema e ignoro la razón que un programa de edición de vídeo como DA VINCI RESOLVE no se ejecutaba correctamente con este driver libre de NVIDIA. Así que decidí instalar el driver propietario y se solucionó el problema. Yo estoy a favor del software libre pero tampoco soy un taliban. Me considero pragmática. Digo sí al software libre pero si un software es propietario y funciona bien, no le hago asco a utilizarlo si es gratuito, claro está. Así que vamos a ponernos manos a la faena.

Lo primero que hay que hacer es añadir una lista de repositorios de Debian, en este caso, Debian 12 al archivo que está en la siguiente ruta /etc/apt/sources.list y en este caso particular, yo añadiría todos los repositorios, entre ellos los contrib non-free porque hay que instalar una serie de paquetes necesario para correr el driver propietario de NVIDIA.


root@debian:/home/user# gedit /etc/apt/sources.list

 

Copiamos y pegamos la siguiente lista de repositorios:  


deb http://deb.debian.org/debian bookworm main

deb-src http://deb.debian.org/debian bookworm main


deb http://deb.debian.org/debian-security/ bookworm-security main

deb-src http://deb.debian.org/debian-security/ bookworm-security main


deb http://deb.debian.org/debian bookworm-updates main

deb-src http://deb.debian.org/debian bookworm-updates main

deb http://deb.debian.org/debian bookworm main

deb-src http://deb.debian.org/debian bookworm main


deb http://deb.debian.org/debian-security/ bookworm-security main

deb-src http://deb.debian.org/debian-security/ bookworm-security main


deb http://deb.debian.org/debian bookworm-updates main 

deb http://deb.debian.org/debian bookworm-backports main contrib non-free

deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free


Actualizamos los repositorios de Debian en modo root con el siguiente comando:

root@debian:/home/user# apt update


Es el momento de descargar el driver en un archivo ejecutable de la página oficial de NVIDIA. En este link puedes descargar el archivo: https://la.nvidia.com/Download/index.aspx?lang=la

Selecciona el tipo, la serie y la familia del producto que has comprado (tarjeta gráfica) y también el sistema operativo y la arquitectura (en nuestro caso Linux 64 bits) . También puedes seleccionar el idioma y lo descargamos. 

NVIDIA-Linux-x86-1.0-6629-pkg1.run

 

La otra opción sería utilizar el comando nvidia-detect, si no lo  tienes instalado, puedes hacerlo. Detectar cual es la tarjeta NVIDIA    que tienes, te indicará un nombre y puede que te haga una recomendación de instalar  el paquete nvidia-driver o similar. 


Es el momento de  instalar sin salir del entorno gráfico una serie de paquetes:

root @debian# apt install build-essential linux-headers-amd64 pkg-config libglvnd-dev

 

Ahora pulsamos a la vez la siguiente combinación de teclas <CTRL> + <ALT> + <F5> y abandonamos el modo gráfico de Debian.

A continuación, está bien saber que escritorio usamos en Debian, en mi caso es el Cinnamon:

root@debian# echo $XDG_CURRENT_DESKTOP

Y el terminal nos dirá:  

X-Cinnamon

 

Si deseamos saber que sesión gráfica utilizamos podemos usar este comando:


root@debian:/home/user# systemctl status display-manager

 

 El terminal mostrará el siguiente resultado: 

lightdm.service - Light Display Manager

     Loaded: loaded (/lib/systemd/system/lightdm.service; enabled; preset: enabled)


También podemos usar este comando para saber la sesión gráfica:

user @debian:~$ ps auxf | grep -e dm$ -e slim$

 

El terminal arrojará el siguiente resultado:  

root        1063  0.0  0.0 308380  7340 ?        SLsl 10:46   0:00 /usr/sbin/lightdm


En mi caso particular la sesión gráfica es lightdm. Para detener la sesión gráfica en Debian 12:

root@debian# sudo service lightdm stop

 

Es el momento de deshabilitar el módulo de kernel NOUVEAU que dificulta la instalación del driver propietario de NVIDIA.  Nouveau es el driver de código abierto presente en el kernel Linux para las gráficas de NVIDIA y ha recibido un fuerte varapalo después de que Ben Skeggs haya renunciado a su puesto en Red Hat, ya que dicha decisión ha puesto fin a su contribución activa al controlador.

Par empezar, ejecuta este comando para verificar si nouveau está habilitado:

user@debian:~$ lsmod | grep nouveau

 

El terminal ofrecerá un resultado similar a este:

nouveau              1949696  0

 mxm_wmi                16384  1 nouveau

video                  49152  1 nouveau

i2c_algo_bit           16384  2 mgag200,nouveau

ttm                   106496  2 drm_vram_helper,nouveau

drm_kms_helper        184320  4 mgag200,nouveau

drm                   491520  6 drm_kms_helper,drm_vram_helper,mgag200,ttm,nouveau

wmi                    32768  5 wmi_bmof,dell_smbios,dell_wmi_descriptor,mxm_wmi,nouveau


Escribe los siguientes pasos para deshabilitar NOUVEAU 


cat <<EOF | sudo tee /etc/modprobe.d/blacklist-nouveau.conf

blacklist nouveau

options nouveau modeset=0

EOF


No te olvides de actualizar el kernel con initramfs en modo root:

root@debian#  sudo update-initramfs -u

 

y ahora reinicia el sistema con el siguiente comando: 


root@debian# sudo reboot

 

Fuente: https://docs.nvidia.com/ai-enterprise/deployment-guide-vmware/0.1.0/nouveau.html


Detenemos la sesión gráfica que en mi caso particular es lightdm

root@debian# sudo service lightdm stop


Si usamos systemd. que es un conjunto de demonios o daemons de administración de sistema, bibliotecas y herramientas diseñados como una plataforma de administración y configuración central para interactuar con el núcleo del Sistema operativo GNU/Linux, para detener la sesión gráfica usamos el siguiente comando en modo root:

root@debian#  sudo systemctl stop lightdm


Buscamos la subcarpeta llamada Descargas con el comando cd: 


root@debian# cd /home/user/Descargas

 

Y hacemos un listado de los archivos que hayan en esa subcarpeta 

root@debian:/home/user/Descargas#  ls

 

Concede permisos de ejecución con el siguiente comando en modo root para instalar el driver propietario: 

root @debian # chmod +x NVIDIA-linux-x86-64_xxxxx.run

 

Ejecuta en modo root el driver propietario para que se instale: 

root @debian # ./NVIDIA-linux-x86-64_xxxxx.run

 

Aparece una serie de pantallas y se marca la opción "continuar" y "sí" a todo para que la instalación siga su curso. Puede que te advierta de algún inconveniente. 

Cuando termine de instalas, solo te queda regenerar y subir el kernel con la configuración actualizada con el siguiente comando

root@debian # sudo update-initramfs -u 


Y finalmente, actualizar otra vez:

root@debian # sudo reboot


Acabo de actualizar mi kernel y ahora el módulo del kernel NVIDIA no se carga. ¿Cuál es el problema?

La capa de interfaz del módulo del kernel de NVIDIA debe compilarse específicamente para la configuración y versión de su kernel. Si actualiza su kernel, la solución más sencilla es reinstalar el controlador.

AVANZADO: Puede instalar el módulo del kernel NVIDIA para un kernel que no se está ejecutando (por ejemplo: en la situación en la que acaba de compilar e instalar un nuevo kernel, pero aún no ha reiniciado) con una línea de comandos como ésta:


root@debian # sh NVIDIA-Linux-x86-1.0-6629-pkg1.run --kernel-name='KERNEL_NAME'


Donde 'KERNEL_NAME' es lo que `uname -r` indicaría si el kernel de destino se estuviera ejecutando.


Ejemplo: he escrito en mi terminal como usuario: 

user@debian:~$ uname -r

 

Y a mí me arroja el terminal como resultado: 

5.10.0-29-amd64


Entonces, tendrías que ejecutar el siguiente comando para instalar de nuevo el driver propietario de NVIDIA que es un archivo ejecutable con el nucleo actualizado con el siguiente comando:

root@debian ./NVIDIA-Linux-x86-1.0-6629-pkg1.run --kernel-name='5.10.0-29-amd64'

 

Fuente: https://support.nvidia.eu/hc/es/articles/5418445281810-Acabo-de-actualizar-mi-kernel-y-ahora-el-m%C3%B3dulo-del-kernel-NVIDIA-no-se-carga-Cu%C3%A1l-es-el-problema