Instalar driver privativo de Nvidia con kernel Linux >= 2.6.20

linux (el kernel, qué si no?)

Si tienes una tarjeta gráfica de Nvidia y usas GNU normalmente usarás los drivers privativos y gratuitos para la misma. Como sabrás, hace falta compilar el módulo “nvidia” para cada nueva versión de kernel que instales. El problema ha surgido a partir de la versión del kernel linux 2.6.20, en el que se activó algo sobre la paravirtualización que hace que la compilación del módulo nvidia falle.

Introducción

La principal motivación de esta receta es explicar como tener aceleración hardware para gráficos 3D en las tarjetas Nvidia, ya que el driver libre “nv” no nos lo proporciona. La receta básicamente consistirá en añadir unas líneas al Makefile del instalador de Nvidia, así que vamos al lío.

Obtener el instalador/los paquetes necesario para nuestra tarjeta gráfica.

Últimamente Nvidia está haciendo muchos cambios sobre sus drivers, por lo que muchas tarjetas que estaban soportadas han pasado a estarlo por el driver “legacy” (el viejuno) y cosas por el estilo. Las distintas opciones que tenemos son:

  • Última versión del driver (actualmente 100.14.11).
  • Última versión del driver “legacy” (actualmente 1.0-9639).
  • Versión “legacy” para GPUs muy viejas (actualmente 1.0-7185).

Para saber qué driver te conviene más es recomendable verlo en la lista de hardware soportado por el driver de Nvidia.

Instalación mediante instalador de la web de Nvidia

Para instalarlo mediante el instalador oficial de Nvidia lo descargaremos a nuestro disco duro desde su web a un directorio, por ejemplo, ~/nvidia.

Una vez descargado el comportamiento a seguir es el mismo para todas las versiones.

  1. Desinstalamos las versiones previas que tengamos instaladas, ya sea mediante apt si usamos el método de module-assistant como si usamos el mismo instalador de la web de Nvidia. Si estamos en este último caso deberemos ejecutar como root:
    # nvidia-installer —uninstall
  2. Descargamos y descomprimimos la nueva versión. Para ello:
    ~/nvidia $ sh NVIDIA-Linux-x86-100.14.11-pkg1.run -x
  3. En el paso anterior se creará un directorio. Iremos a la siguiente ruta:
    ~/nvidia $ cd NVIDIA-Linux-x86-100.14.11-pkg1/usr/src/nv/
  4. Editamos el archivo Makefile.kbuild y añadimos en la línea 78 estás dos líneas:
    PARAVIRT_OPS := $(shell grep "D paravirt_ops" /boot/System.map-$(shell uname -r) | colrm 9)
    EXTRA_LDFLAGS := --defsym paravirt_ops=0x$(PARAVIRT_OPS)
    

Tras esto tan sólo deberemos cerrar el servidor de las X con “/etc/init.d/gdm stop” y, desde un terminal, ejecutar como root lo siguiente:
~/nvidia/NVIDIA-Linux-100.14.11-pkg1 # ./nvidia-installer

Tras esto, y tras terminar el proceso, tendremos instalado el driver de Nvidia. Sólo hará falta configurar convenientemente Xorg para que lo use.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Heracles

algo mas para Debian lenny con kernel 2.6.26

Muy útil la receta, para instalar el driver en la versión testing de debian con kernel 26 no me funcionaba la receta http://crysol.org/node/121, me decía que actualizara las fuentes, de modo que seguí esta, pero tampoco tenía narices.
El problema era que el sistema tenía gcc4.3 y el driver de nvidia utiliza gcc4.1, basta con:
$ export CC=gcc-4.1

antes de instalar y todo perfecto, gracias a súper Oscar.

Imagen de oscarah

Venga!

Muchas gracias por el halago... pero lo de super... me supera, yo no soy jmn. Sticking out tongue

Saludos.

PD: No es cuestión del driver, sino del kernel, que está compilado con gcc-4.1. Si compilas un módulo con otra versión del compilador, puede que el kernel te mande a zurrir mierdas con un látigo... pero con educación. Laughing out loud

"aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" --GCC 4.3.1

MX/MX 400

Gracias a tu página conseguí instalarlo en el kernel 6.21, tengo que probarlo en el 6.25.
Sólo una cosa, el drivers legacy” (actualmente 1.0-9639) tiene problemas con las X (tema de ABI, no se mucho más) el caso es que en el drivers http://www.nvidia.com/object/linux_display_x86_96.43.07.html el problema está solucionado.
Gracias de nuevo.
adslinex

Imagen de david.villa

Todo esto..

ya no hace falta a día de hoy. Hace mucho que se arreglaron esos problemas de los que habla la receta y ya se puede utilizar la forma Debian que es mucho más aconsejable y más limpia, no te deja ficheros sin control por ahí….

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Funciona!!

Seguí las indicaciones y funciona correctamente. Gracias.

Imagen de nacho

Una pega...

Sí, funcionar, funciona. No muy bien, sólo consigo unos 800 fps, pero bueno, es suficiente. Sin embargo, hay una pega gorda: cada vez que reinicias el ordenador tienes que volver a ejecutar el instalador. Esto pasa desde siempre con el instalador de Nvidia. ¿Por qué? ¿Qué tipo de instalación cutre hace?

Una vez opté por solucionarlo incluyendo el script de Nvidia entre los scripts de arranque, para que se ejecutara justo antes que gdm, pero esto es un poco chapuza.

-------------
Nacho

Nacho

Imagen de Lk2

Eso a mi...

Nunca me ha pasado.... y no sé cuantos fps me da, pero supongo que algo más de 800..... luego lo miro

A mi eso tambien me pasaba

A mi eso tambien me pasaba que tenía que reinstalar los drivers cada vez que arrancaba el sistema... Pero reinstale debian y se solucionó... Seguramente tambien habra alguna forma senzilla de arreglarlo, debe ser algo así como un enlace que se rompe y cosas así.

Imagen de Ricki

autoload

¿Has mirado que nvidia esté listado en el fichero /etc/modules.autoload.d/kernel-2.6?

Imagen de nacho

No lo tengo...

No tengo ese directorio. No sé si es porque es específico de alguna distribución en concreto (yo uso Debian) o de algún paquete en particular que no tengo instalado Puzzled

-------------
Nacho

Nacho

Imagen de Ricki

Efectivamente, no uso

Efectivamente, no uso Debian, pero una sencilla búsqueda nos devuelve que:

If the nvidia modules doesn't load automatically and the X server
complains about it, add 'nvidia' to /etc/modules to make it auto load
on boot.

Aunque si el módulo está bien instalado, lo puedes cargar en el kernel ejecutando modprobe nvidia sin necesidad de hacer todos los pasos como decías.

Funciona perfecto!

Gracias!!!!
Me estaba enloqueciendo con los drivers esos y gracias a tu pequeña receta me anda todo 10 puntos!!!
Mchas gracias de nuevo!!!

Adrián de Lanús!

:-P

En cuanto tenga montado el PC en casa lo pruebo

¡¡GRACIAS!!

The cause of the problem is:
The vendor put the bug there.
-- Meta amigo informático --

Sigo teniendo problemas

Buenas, he seguido todos los pasos que poneis para instalar los drivers, inclueyendo lo de añadir para que se cargen al inicio (/etc/modules) y sigo teniendo problemas, el primero sucede que cuando intento parar las X, se me bloquea y se me queda un mensaje de RC.local, por lo que en lugar de instalar el driver parandolo de la forma normal /etc/init.d/gdm stop lo tengo que hacer arrancando el sistema en telinit 1, instalo los drivers correctamente, actualizo el Xorg.conf, y reinicio las X, y funciona correctamente, sale el logo de nvidia al arrancar y funciona todo. Cuando reinicio viene la segunda parte del problema, cuando se carga el nucleo, antes de salir pantalla de inicio de usuario, empieza a dar pantallazos en negro, y en consola para logearme, y finalmente me sale un mensaje que muestra que estoy trabajando en resolucion baja. Tengo que volver a reinstalar los drivers para que funcionen, o utlizar los “nv”. Llevo intentando instalar los drivers desde Ubuntu 6.10 pero nunca he sido capaz, ahora he llegado a conseguir que funcionen, pero cuando reinicio todo termina.
Tengo una nVidia Geforde FX 5200 ultra, y los drivers que instalo funcionan correctamente, son los mismos que los de la receta.
Uso Ubuntu 7.10 kernel linux 2.6.22-14
Si me pudierais ayudar os lo agradeceria.

PD: me acabo de dar cuenta que si al arrancar reinstalo los drivers, cuando arranco mi particion de windows no se monta automaticamente, como tengo puesto que suceda, y sucedia siempre. No se si servirá de ayuda, pero quizas algo tenga que ver.

Imagen de Lk2

En principio

Esta receta es/era para Debian…y digo “era” porque ya se puede instalar desde hace algún tiempo con el método habitual de Debian con “module-assistant” (http://crysol.org/node/121).

Para Ubuntu y derivados creo que viene el paquete, así que es mejor instalarlo por ahí para empezar a probar. Si no recuerdo mal deberás tener instalados los paquetes linux-restricted-modules de tu versión del kernel y el paquete nvidia-glx (o nvidia-glx-new que también está).

Todo esto de los paquetes lo he sacado de packages.ubuntu.com, así que ya puedes echarle un ojo porque lo que te dije es válido para la última versión!

Eso hice

Activando los repositorios privativos, y con la ubuntu 7.10 tienes la opcion de instalar los drivers privativos, lo cual hice, pero de esa manera no llege ni a ver aceleracion 3D en mi grafica, aora lo consigo aunque despues de reiniciar se desactive, pero algo es algo. Me meti en mil foros de ubuntu y nvidia, para intentar instalarlos, pero no fui capaz sigue dando problemas.
Ahora me e fijado que antes de dar el pantallazo negro que dice que trabajo en resolucion baja, pone:
kinit: name_to_dev_t(/dev/disk/by_uuid(numeritos correspondientes) sda2 (8,2)
kinit: no resume images, doing normal boot.
y se queda en el login por consola.

Gracias de antemano!

Imagen de Lk2

No tiene nada que ver

Siento decirte que ((creo)) que no tiene nada que ver el error que comentas, ya que más bien parece que se busca alguna imagen creada al haber hibernado o suspendido el equipo y, si no lo hiciste, no la encuentra, no veo que tenga que ver con el driver de Nvidia…

Yo comprobaría en la web de Nvidia si tu tarjeta sigue siendo soportada por el driver “bueno” o si ha pasado a alguno de los drivers “legacy”, porque debe andar en el límite de bien.

De todos modos, si encuentras solución al problema no estaría de más una recetilla …

Pense eso

Instale tambien los linux-restricted-modules y el glx, y todo funciona correctamente, pero sigue pasando lo mismo, que cuando reincio se cuelga el entorno grafico.
Si, en teoria se incluye, eso lo mire, y se encontraba. Ademas, si no se encontrara, el driver no funcionaria no? y funcionar funciona, pero lo que sucede es que lo tengo que instalar cada vez que inicio el pc.
Si encuentro solucion, x mi no hay problemas de recetas, porque despues del tiempo que llevo intentando usar los drivers…
Pense que podria tener algo que ver por que en teoria al instalar los drivers, en ubuntu, el nucleo linux se recompila solo, gracias a libc6 y de hecho al finalizar de instalar los drivers se ejecuta. Podria ser que creará una imagen del kernel que no se usase, y de ahi que al arrancar no se carguen los drivers, o alguna cosa por el estilo?
Gracias de todos modos.
Y seria un honor para un alumno de 1º de sistemas de la ESI, como yo, el hacer una receta! jaja