top of page
Foto del escritorBraulio Madrid

Cómo instalar el controlador NVIDIA en Debian

Hace unos días compré un portátil de segunda mano que equivocadamente consideré que valía la pena revivir usando Debian como distribución, pero al probar comandos con mi computador personal que usa la distribución Zorin OS, terminé por joder mi portátil personal, por lo que terminé instalando Debian en mi portátil principal debido a que Zorin OS oculta ciertas configuraciones que evitan que pueda tomar control.


La mayoría de distribuciones depende de Ubuntu y Ubuntu a su vez dependen de Debian, por tanto, Debian es más básico, es más "puro", más estable y te otorga mayor control que el resto de distribuciones, no es una distribución fácil de manejar, carece de paquetes que #Ubuntu si tiene, pero no quiere decir que sea imposible y en el largo plazo aprenderás Linux en serio.


Preparando Debian para la instalación.

El primer requisito es tener instalado el instalador de paquetes Synaptic, aunque es poco intuitivo te ofrece más información y mayor control que usar las tiendas de aplicaciones.




Lo primero que debemos saber es si tenemos una tarjeta gráfica disponible, para esto instalamos y ejecutamos neofetch.

sudo apt install neofetch

Esto ha de devolver un resumen de la configuración del equipo incluido las tarjetas gráficas disponibles, aunque las tarjetas gráficas parezcan que están disponibles, no quiere decir que funcionen, podemos instalar el controlador, pero puede que este nunca logre comunicarse con la gráfica, esto puede ser porque el controlador no es el adecuado o porque la gráfica esta físicamente muerta.

Para elegir el controlador adecuado debemos descargar un paquete llamado nvidia-detect, para instalarlo debemos incluir en Debian dos repositorios PPA contrib y non-free.



Para agregar estos repositorios debes abrir la aplicación software and updates y marcar los repositorios que aparecen en la imagen.


$ nvidia-detect  
Detected NVIDIA GPUs: 07:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM206 [GeForce GTX 960] [10de:1401] (rev a1) 

Checking card:  NVIDIA Corporation GM206 [GeForce GTX 960] (rev a1) Your card is supported by all driver versions. 
Your card is also supported by the Tesla 440 drivers series. 
Your card is also supported by the Tesla 418 drivers series. 
It is recommended to install the     
    nvidia-driver package.

Ahora si podrás instalar nvidia-detect usando el comando `sudo apt install nvidia-detect`

y luego lo ejecutas. Esto debe devolver uno de los cuatro controladores genéricos con su nombre de paquete exacto. en mi caso es nvidia-legacy-390xx-driver, pero en su caso puede ser algo distinto.


Instalación de drivers.

Hay una guía directa de cómo hacerlo en link de Debian aunque voy a dar más detalles particulares y como solventar algunos problemas no mencionados en la guía.


La última version de Debian es la 11 y en esta me voy a centrar, pero esta guía sirve de la version 9 en adelante.


Antes de instalar el controlador es necesario saber qué tipo de arquitectura posee nuestro dispositivo, si es una computadora antigua posee una arquitectura de 32bits. Si es moderna es de 64 bits, este dato se puede intuir al ejecutar neofetch o del kernel, pero con toda seguridad lo puedes consultar en un buscador con el modelo del dispositivo.


sí es de 64 bits entonces instala:

# apt install linux-headers-amd64

Si es de 32 bits entonces instala según si viene con PAE:

# apt install linux-headers-686
# apt install linux-headers-686-pae

Después de instalados los headers, vamos a instalar el controlador que nos sugirió #nvidia_detect junto con el firmware, en mi caso el nvidia-legacy-390xx-driver.

 apt update
# apt install nvidia-legacy-390xx-driver firmware-misc-nonfree

Un detalle que la guía no comenta es que después de instalado el driver, este puede detectar la gráfica y mostrar información del hardware, pero será inutilizable hasta que no tenga el firmware, así que ambos paquetes son necesarios.


Reiniciamos el dispositivo y cuando inicie ejecutaremos el comando nvidia-smi desde la terminal y obtendremos algo como esto:


Fri Aug 19 13:23:19 2022

+-----------------------------------------------------------------------------+

| NVIDIA-SMI 390.151 Driver Version: 390.151 |

|-------------------------------+----------------------+----------------------+

| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |

| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |

|===============================+======================+======================|

| 0 GeForce 820M Off | 00000000:04:00.0 N/A | N/A |

| N/A 52C P0 N/A / N/A | 0MiB / 1985MiB | N/A Default |

+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+

| Processes: GPU Memory |

| GPU PID Type Process name Usage |

|=============================================================================|

| 0 Not Supported |

+-----------------------------------------------------------------------------+


Si obtienes un mensaje parecido a este, entonces ya has logrado instalar el controlador con éxito, si obtienes un mensaje distinto entonces has instalado un controlador erróneo, si obtienes el mensaje `Device not found` a pesar de estar seguro que instalo el driver correcto, entonces tu grafica físicamente está muerta a pesar de ser detectado por el kernel.


El comando nvidia-smi ya viene instalado desde las dependencias del legacy-390xx-driver, pero también viene junto a otros drives gráficos y si mezclas dependencias de distintos drivers vas a tener problemas muy incomodos, por eso es mejor usar el instalador de paquetes de synaptic, porque te permite ver todas las dependencias que vienen con el controlador, incluso instalar más dependencias según tus necesidades.


El problema de los portátiles con doble tarjeta

En mi caso que tengo un portátil Asus X455L que tiene una gráfica integrada Intel y la dedicada NVidia GeForce 820m, normalmente el kernel siempre usa grafica la integrada Intel dejando inutilizada la gráfica dedicada, hay varias formas de activar el poder de una u otra grafica o hacer un uso discreto de la gráfica dedicada y como última opción está castrar el uso de alguna de las dos gráficas, en mi opinion la menos deseable, pero ¿cuáles son las diferencias y que beneficios obtengo de cada una de las opciones?

Gráficos discretos con Optimus.

Esta para mi es la mejor opción, ya que seguirá usando la tarjeta integrada Intel y si necesita más poder de cálculo, la GPU Intel le delegará los cálculos a la gráfica NVidia a traves de la tecnología NVidia Optimus, usando así inteligentemente el consumo eléctrico.


Para saber si la GPU NVidia cuenta con esta tecnología ve a la lista de NVidia.

Si es así, entonces puede instalar #Bumblebee o primus para aprovechar esta tecnología de gráficos discretos.


Switch de GPUs

Si la primera opción no es posible aún queda la posibilidad de activar una u otra GPU a conveniencia con el comando prime-select, esta opción es un tanto incomoda.


Castración de GPU

Este para mi puede ser la peor opción, pero es la que queda cuando ya no hay más opciones aun así tiene un punto interesante y es elegir entre un ahorro energético definitivo usando solo la gráfica integrada contra el máximo desempeño de la gráfica dedicada todo el tiempo.


Servidor de gráficos OpenGL

Seguramente ya te has dado cuenta que quizás ninguna aplicación que use gráficos 3D está funcionando en Debian y eso es porque no viene instalada por defecto.


Para saber si cuentas con un servidor grafico puedes probar con glxgears, este comando te mostrará tres piñones girando, si los ves entonces ya cuentas con un servidor gráfico, pero si por el contrario obtienes un mensaje como:

Xlib: extension "GLX" missing on display ":0".
Error: couldn't get an RGB, Double-buffered visual

Entonces puede haber un indicio de que no tengas un servidor grafico para OpenGL o simplemente glxgears no sabe con cual grafica iniciar el benchmark, pero para estar seguros puedes instalar la aplicación hardinfo y hacer el Benchmark de GPU



Si el resultado del benchmark en el apartado de maquina aparece que el renderizador de OpenGL sale como desconocido, entonces es porque no tienes instalado ninguna librería como servidor OpenGL, para solucionarlo hay que instalar o reinstalar algunos paquetes:

sudo apt-get install --reinstall libgl1-mesa-glx bumblebee-nvidia

Con instalar esto y las dependencias necesarias bastaría, pero si aun da problemas el ejecutar el comando glxgears, aun después de poder ver el nombre de las gráficas y después de haber reinstalado la librería de mesa, entonces quizás ejecutando glxinfo arregle todos los problemas.


Ejecute el comando glxinfo -h, verá la ayuda, entre las opciones está -l que muestra los límites de OpenGL, por alguna razón esto hace que se elija algún servidor disponible, ya sea de Intel o de NVidia.


Hasta aquí ya no hay problemas y puedes usar los gráficos, todo depende también de la opción que hayas elegido y si tu grafica cuenta con la tecnología #Optimus.


Configuración de ajustes de NVidia.

Segun que driver hayas instalado esta incluye algunas dependencias como #glxinfo, #glxgears, #prime_settings, #nvidia_xconfig, pero en mi caso viene con #nvidia_settings.

al ejecutarlo dice que debo ejecutar primero #nvidia_xconfig como usuario root, no obstante, este paquete ya está obsoleto porque ya viene contenido en la librería xorg, así que no es recomendable instalarlo.


Sin embargo, ejecutando `optirun nvidia-settings -c :8`, permite ahora ver todas las opciones disponibles que no podíamos acceder usando el comando #nvidia-settings por sí solo.


Aun no entiendo cómo lograr que los cambios se conserven sin necesidad de siempre usar el comando #optirun, me gustaría en un futuro no tener que forzarlo todo con comandos, pero aún estoy aprendiendo.


Conclusiones.

Este post lo he escrito principalmente como guía personal por si en un futuro tuviera que pasar por todo este camino tortuoso de nuevo, espero que mi experiencia le sirva para aclarar los posibles fallos en su equipo.


Aun no comprendo mucho de los comandos y sus opciones que vienen por defecto como dependencias, tampoco tengo muy claro que es #XOrg o #Wayland y cuál es el papel que juega en todo esto.


Por ahora esto debería bastar para instalar el controlador NVidia con éxito, no siendo mas nos vemos en un proximo post.

367 visualizaciones0 comentarios

Comments


bottom of page