Las tarjetas NVidia, desde la TNT hasta las GeForce3 o las Quadro2 tienen
drivers oficiales de NVIDIA(1), aunque sus
drivers no son open source. En este artículo explico como instalarlos y
solucionar algunos problemas para Debian, aunque deberían servir para otras
distribuciones (si se siguen las instrucciones de NVIDIA(2)).
Los drivers de NVIDIA para Linux se encuentran disponibles en esta página(2).
Las instrucciones están en PDF(3) o
texto plano(4).
Hay ficheros tgz, rpm para RedHat 6.2, 7.0 y 7.1 y para Suse 7.0, 7.1, 7.2,
Mandrake 8.0. Todos en versiones para kernels de un procesador como de dos
procesadores.
Los módulos
Los drivers consisten de dos partes:
de una parte “abierta” que sólo hace llamadas a funciones de módulos
pecompilados. Estos módulos tienes que ser instalados con las funets
normales del kernel y el kernel debe ser recompilado.
son cargadas por el Xfree para que funcionen las OpenGL.
Instalación de los paquetes en Debian
En el caso de contar con algunos de las distribuciones Linux previamente
mencionadas, se deben seguir las instrucciones de instalación. En caso de usar
Debian (probada con la Sid), deben instalarse los siguientes
paquetes:
apt-get install nvidia-glx
apt-get install nvidia-kernel-src
Opcionalmente podéis instalar el nvidia-glx-dev si pensáis desarrollar
con GL.
IMPORTANTE: Los procedimientos de instalar los paquetes de Debian, incluyen
bajarse los tgz de NVIDIA, pero a veces no funciona el URL especificado en las
reglas de los paquetes, por lo que es recomendable antes bajarse ambos ficheros
y ponerlos en /usr/src. El dpkg los detectará y los usará en vez de bajarlo de
Internet.
Con esos dos paquetes se pueden instalar y compilar el kernel. También se pueden
bajar los paquetes previamente compilados, pero no los probé personalmente. Yo
siempre he recompilado el kernel.
Compilación e instalación de los paquetes
Una vez instalados con el apt-get, encontraréis en /usr/src dos directorios
(toda la información de los módulos se instala en el /usr/doc):
nvidia-glx-1.0.GLXVER
nvidia-kernel-src.tar.gz
donde GLXVER es la versión de las GLX (al momento de escribir este artículo, la
última versión es la 1.0.1541
Lo primero que hay que hacer, después de compilar el kernel, es:
tar xvzf nvidia-kernel-src.tar.gz
cd kernel-source-KVER
make-kpkg modules_image
dpkg -i ../nvidia-kernel-KVER*.deb
donde KVER es la versión del kernel que habéis compilado previamente (así se
llaman los paquetes de los fuentes del kernel en Debian).
Una vez realizado los pasos anteriores, ya están instalados los módulos del
kernel de la targeta. Ahora hay que instalar las librerías GLX que serán usadas
por el XFree. Para ello:
cd nvidia-glx-1.0.GLXVER
dpkg -i ../nvidia-glx*.deb
Incompatibilidades del kernel
Los módulos del kernel de NVIDIA son incompatibles con el framebuffer y el
módulo nv del kernel. Así que hay que deshabilitarlos a la hora del make
menuconfig.
Incompatibilidades GLX
hay que tener mucho cuidado que no queden viejas librerías de OpenGL instaladas
en el sistema, ya que darán problemas a la hora de ejecutar programas GL. Por
ejemplo, en mi sistema ha quedado (para las GLX 1.0.1541):
gallir@linux:/usr/src$ locate GL | grep .so
/usr/lib/libGL.so
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.0.1541
/usr/lib/libGLcore.so.1
/usr/lib/libGLcore.so.1.0.1541
…
gallir@linux:/usr/src$ locate glx | grep .so
…
/usr/X11R6/lib/modules/extensions/libglx.so
/usr/X11R6/lib/modules/extensions/libglx.so.1.0.1541
…
Estas son las librerías necesarias para las GLX.
Si se ven otras librerías GL o
GLX en los directorios /usr/lib o /usr/X11R6/lib/modules/extensions es porque
tenéis otras versiones instaladas. Mirarlas y moverlas a otros directorios si
tenéis problemas (nunca borrarlas hasta estar seguros que funciona todo
correctamente).
Configuración del XFree (/etc/X11/XF86Config-4)
Antes de arrancar las X, hay que verificar que tenéis las siguientes opciones en
el fichero de configuración del XFree:
…
Section “Module”
Load “dbe”
Load “glx”
Load “extmod”
…
Section “Device”
Identifier “GeForce”
Driver “nvidia”
…
Verificar que todo esté correcto
Si tenéis todo esto hecho correctamente (no os olvidéis también de instalar el
kernel que habéis compilado), la terjeta ya debe funcionar y suele ir muy rapido
con las GL.
Si tenéis problemas, lo primera que hay que verificar es que una vez arrancadas
las X tengáis el módulo del kernel NVIDIA cargado
gallir@linux:/usr/src$ /sbin/lsmod
Module Size Used by
NVdriver 723120 14 (autoclean)
y que el XFree pudo cargar correctamente el módulo GLX. Si ejecutáis el comando
xdpyinfo os tiene que aparecer NVIDIA-GLX en la sección number of
extensions.
Problemas con el APM
El módulo del kernel de NVIDIA no deja que el sistema se ponga en estado suspend
o sleep, por lo que es normal que encontréis los siguienes mensajes en
/var/log/messages o dmesg.
NVRM: avoiding suspend request, don’t want to shutdown!!
nv_kern_pm event: rqst 0x0 data 0x3
Esto es normal y una putada… porque es código cerrado y no se puede hacer
nada, solo esperar o presionar a NVIDIA para que corrija dichos errores.
Workaround
Mientras tanto, yo lo solucioné haciendo que se descargue el módulo NVdriver
antes que el sistema intente pasar a estado suspendido. Esto se hace gracias al
apmd.
El apmd es llamado por el kernel cada vez que se produce un evento de la BIOS
para cambiar el estado del sistema. Luego el apmd llama al apmd_proxy
que llamará a los scripts o programas ubicados en el /etc/apm/event.d:
linux:/# ls /etc/apm/event.d/
00hwclock 00nvidia
En particular, yo he creado el fichero 00nvidia cuyo contenido es el
siguiente:
#!/bin/sh
# get Debian config information
. /etc/default/rcS
if [ “$1” = “suspend” -o “$1” = “standby” ]; then
/etc/init.d/kdm stop
sleep 1
/sbin/rmmod NVdriver
elif [ “$1” = “resume” -o “$1” = “start” ]; then
/etc/init.d/kdm start
fi
Lo que hace el script es que cada vez que se reciba el evento suspend o
standby primero para al kdm y luego descarga el módulo NVdriver para
que el sistema pueda pasar a suspendido. Luego cuando se reinicia el sistema,
arranca nuevamente el kdm.
Este fichero funciona perfectamente para mi ordenador, pero no los he probado
con portátiles ni con diferentes versiones de BIOS. Por supuesto, tenéis que
tener habilitado el módulo apm del kernel y el paquete apmd
instalado. Si os encontráis con otros casos y lográis resolver este problema
del APM, poned vuestras soluciones aquí…
Nada más, que os vaya bien el Quake… sobre todo el Quake3 que va muy bien a
pantalla completa, 16 bits (en el XF86COnfig) y resolución (en el Quake) de
1024×768.
Mas info en los hilos de discusión de Bulmailing:
Hecho con Quanta 2Lista de enlaces de este artículo:
Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=869 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.