Cómo funciona el desarrollo de los drivers de NVIDIA para Linux

nvidiaHace un tiempo atrás, el sitio especializado Phoronix comenzó a recolectar preguntas que sus lectores quisieran realizar a NVIDIA sobre su soporte para el sistema operativo Linux.  Las preguntas fueron repondidas por Andy Ritger, quien lidera el equipo de drivers gráficos NVIDIA para UNIX en GPU’s de estaciones de trabajo, escritorio y netbooks.

Sorprendentemente, Andy fue bastante completo y directo en sus respuestas, lo que produjo una entrevista imperdible para todo aquel que quiera conocer el punto de vista de NVIDIA respecto a la plataforma Linux y otros sistemas Unix como Solaris y FreeBSD.

En este artículo publicamos un extracto de lo que nos pareció más interesante.

Andy dice que la mayoría de los ingenieros trabajando en el equipo de Linux usan emacs y/o vim en forma diaria, el código fuente se mantiene a través de Perforce (como en Google) aunque algunos de ellos usan git en forma personal, antes de aplicar los cambios en Perforce.

Cuando llega la hora de poner a prueba el driver, usan un conjunto interno de tests que se encarga de asegurar una correcta implementación de OpenGL. Además usan algunas aplicaciones como Maya, Viewperf, Unigine Tropics, ETQW, Doom 3, Quake 3 y por su puesto, Compiz.

Más del 90% del código es multiplataforma

Se estima que más del 90% del código que está en el driver para Linux es el mismo que se usa para el resto de las plataformas. La compañía ha realizado un esfuerzo para tener una arquitectura en donde gran parte del código sea independiente de la plataforma, lo que hace que el código específico sea muy reducido.

Tanto así, que el módulo que se carga a nivel de kernel es casi completamente independiente del sistema operativo subyacente. La mayor parte del código es el mismo para Windows XP, Vista, 7, MacOSX, Solaris, FreeBSD y Linux.  De hecho, el binario nv-kernel.o es el mismo para Solaris, FreeBSD y Linux. La única parte que es específica para cada sistema es la que tiene que interactuar finalmente con el kernel y esa fracción es bastante pequeña.

En la implementación de OpenGL, la única parte que cambia es la que tiene que interactuar con el sistema de ventanas (WGL en Windows y GLX en Unix).  Por el lado del código que interactúa con el sistema gráfico X, obviamente es más específico de Unix, aunque no se comparte mucho entre los distintos sistemas. Finalmente, el driver para acelerar la decodificación de video por hardware (VDPAU) usa gran parte del código que fue escrito para Windows (PureVideo).

El segmento de mercado Linux para NVIDIA

Para NVIDIA, el mercado Linux siempre ha sido bastante fuerte, y éste se encuentra principalmente en estaciones de trabajo de gama alta para segmentos específicos de mercado, como por ejemplo la industria energética, automotriz y de producción cinematográfica.  Es aquí en donde el impacto de Linux como plataforma para su negocio es medible para NVIDIA.

Aunque no se tienen porcentajes concretos, del total de las estaciones de trabajo de gama alta que se ocupan para visualización, prácticamente la mitad son Linux, y en la creación de contenido digital, como ya se sabe, es principalmente Linux.

Las estaciones de trabajo 3D con Linux son una proporción importante para NVIDIA y es por ahí en donde se han explorado nuevas tecnologías, como por ejemplo el caso de CUDA, en donde la proporción de usuarios con Linux es alta.

Desde el punto de vista de las descargas del driver desde su sitio web, las cifras no reflejan esta realidad, ya que respecto al driver para Windows, las descargas del driver de Linux son sólo un 0,5%.  Como muchos usuarios obtienen en driver a través de la misma distribución o en el caso de los segmentos industriales, a través de instalaciones OEM, se sabe que este porcentaje no es muy representativo, y medir de esta forma siempre ha sido un desafío.

Abrir el código fuente del driver: imposible

Abrir el código fuente del driver de NVIDIA es algo que probablemente nunca sucederá, y Andy indica tres razones para ello:

  • La competencia en otras plataformas, ya que más del 90% es código compartido con esas plataformas también.  Las piezas específicas para Linux son tan pocas y tienen tan poca influencia que no sería práctico liberarlas.
  • Hay propiedad intelectual de NVIDIA que está contenida en el driver y no quieren exponer.
  • La documentación que mantienen está pensada para ser distribuida en forma interna. Si en algún momento quisieran hacer pública esa documentación, requerirían de un esfuerzo monumental para transformar esos documentos en algo que sea entendible por gente externa a la compañía.

X no es un problema, sino que una oportunidad

Mirando hacia adelante, en NVIDIA creen que las oportunidades de crecimiento están en X, no porque sea malo (de hecho la arquitectura es bastante buena), sino porque la evolución del escritorio Linux está sucediendo ahí e involucra tanto a X, drivers, gestores de ventanas y de composición.

Afortunadamente, X está implementado de tal forma que se puede extender con la flexibilidad necesaria para enfrentar los desafíos que impone el escritorio moderno en Linux.

Link: NVIDIA Developer talks openly about Linux support (Phoronix)

Compartir Compartir
Publicado por Franco Catrin el 23 de November 2009 en la categoría Destacados, Hardware, Software con los tags , , , . Tiene 41 comentarios.

41 Comentarios

Cómo funciona el desarrollo de los drivers de NVIDIA para Linux

Deja tu Comentario ↓
César

DesaprobarAprobar19César dijo el 23-11-2009 a las 15:41:

1

Como siempre Franco fiel a Tux…se agradece…

Ver Comentario... mmm dijo el 23-11-2009 a las 15:41 ...

Fakeroot

DesaprobarAprobar2Fakeroot dijo el 23-11-2009 a las 15:42:

3

Ojalá soporten luego KMS, ademas de mejorar el Nvidia Xserver settings a algo un poco mas similar al que existe en windows, tambien algunas veces los videos en XV parpadean en rojo algunas veces. En general las instalaciones linx con nvidia casi siempre me han funcionado, incluso instalando desde el binario de su página. Lo que si es que ese binario deberia ser MUUUUUUCHOOOOOO mas facil de instalar, si fuera asi, lo bajaria de la pagina de ellos, ya que siempre que salen un nueva version hay que recurrir al “metodo dificil” (.sh) o ir por el repositorio ppa nvidia vdpau en ubuntu. En fin deberian mejorar sus GUI para hacerlas mas amigables.

Franco Catrin

Franco Catrin dijo el 23-11-2009 a las 15:44:

4

@Fakeroot

En la entrevista original, habla de KMS y el instalador, te recomiendo darle un vistazo.

kotelo

DesaprobarAprobar2kotelo dijo el 23-11-2009 a las 15:49:

5

Quería video NVIDIA con mi Vostro 1320, pero el precio se disparaba demasiado… ahora estoy amarrado a Intel y sus horribles drivers en Linux, extraño la NVIDIA 6150 de mi Presario v3000 :(

freax

DesaprobarAprobar4freax dijo el 23-11-2009 a las 15:54:

6

@franco: Creo que es “por supuesto”.
Como siempre muy bueno el artículo

Ver Comentario... pepe dijo el 23-11-2009 a las 16:05 ...

Ver Comentario... Trabajosesteban dijo el 23-11-2009 a las 16:05 ...

FITS

DesaprobarAprobar7FITS dijo el 23-11-2009 a las 16:07:

9

Hay gente que cuando habla demuestra su ignorancia

¿Quien se identifica?

TU_PADRE

DesaprobarAprobar27TU_PADRE dijo el 23-11-2009 a las 16:10:

10

@Trabajosesteban:: Date un tiro perra

Marko

DesaprobarAprobar12Marko dijo el 23-11-2009 a las 16:13:

11

@Trabajosesteban se nota que nunca has usado por un tiempo un PC con una buena versión de Linux, hasta a mi vieja le instalé en el notebook Ubuntu Karmic (porque windows xp le colapsó estrepitosa y repetidamente con una BSOD) y ahora sus amigas me están pidiendo que le instale ester tremendo SO.

desenfoque

DesaprobarAprobar1desenfoque dijo el 23-11-2009 a las 16:14:

12

objetivamente hablando: Si los dos principales fabricantes de GPU de alto rendimiento usan (y usaràn) código privativo ¿Què pasarà con las gráficas para Linux?

Ver Comentario... jeje dijo el 23-11-2009 a las 16:20 ...

Ver Comentario... jeje dijo el 23-11-2009 a las 16:29 ...

Fakeroot

DesaprobarAprobar6Fakeroot dijo el 23-11-2009 a las 16:30:

15

de la entrevista:
Pregunta: Van a implementar tal cosa? NO
p2: y van a implementar esto otro? , NOOO
p3: y que pasa con esto? TAMPOCO
p4: hay planes de…?? Lo hemos conversado pero tenemos cosas más importantes que hacer
p5: lo van a liberar? NO, el 90% del codigo bla bla bla
p6: iplementar SLI? , NOO
p7: implementar PHISIX?? ,NO
p8: MEjorar el GUI de configuracion?, Nos juntamos una vez que ya ni recuerdo cuando fue, osea, NO

En una pagina el pobre tipo de envidia quedo para la embarrada, peor se lo merecen por no implementarlas

Además aprovecha de criticar en algunas cosas al desarrollo del kernel, ya que es mas dificil para un driver privativo seguirlo.

SI ya con los drivers libres no sepuede usar toda la capacidad del harware del que no han liberado todsa las especificaciones, ellos teneniendo esa oportunidad no hacen un driver completo

Termine deprimido leyendo de todo lo que NO va a llegar pronto al driver nvidia privativo de linux

Igual hay cosas bueno y funcionan bien pero les falta equilibrar las cosas

Ver Comentario... anonimo dijo el 23-11-2009 a las 16:40 ...

Ver Comentario... kmilo636 dijo el 23-11-2009 a las 16:44 ...

Franco Catrin

Franco Catrin dijo el 23-11-2009 a las 16:49:

18

@kmilo636

No es necesario entender todo el artículo para formarse una idea. Para eso están los subtítulos.
Las secciones 2da, 3ra y 4ta no son muy técnicas tampoco… o eso creo ;-)

amar0

DesaprobarAprobar0amar0 dijo el 23-11-2009 a las 17:52:

19

apoyo a fakeroot, hasta ahora no he tenido problemas con nvidia en linux pero = molesta el el hecho de que teniendo todo para hacer un driver de 1º calidad tengan uno pésimo, pudiendo se que no somos mayoria(en linux) pero creo que si tuvieran un driver decente y funcionando a la par de los nuevos hardware tendrian publico asegurado. Si mejoraran un poco el driver se quitan a toda la competencia de encima, intel bueno es intel, ati esta peor que nvida(aunque se supone que vienen mejoras) se asegurarían ventas y creo que al final eso es lo que importa ;)

excelente para variar franco

Ver Comentario... mauro dijo el 23-11-2009 a las 18:22 ...

Franco Catrin

Franco Catrin dijo el 23-11-2009 a las 18:26:

21

@amar0

Qué tipo de problemas tienen? Hace años que no uso NVIDIA pero siempre fueron los mejores drivers. Qué las ha pasado?

suku

DesaprobarAprobar1suku dijo el 23-11-2009 a las 18:45:

22

Me parecen muy poco convincentes las razones para no liberar el código…
Y tampoco entiendo en qué les puede perjudicar.
Espero sinceramente que el driver libre de ATI, radeonhd, les de un empujón al vacio.

ffk

DesaprobarAprobar1ffk dijo el 23-11-2009 a las 18:46:

23

uds saben que si es malo los divers de las tarjetas integradas s3 para linux eso si es malo los drivers de intel se quedan penejos al frente de estos y no les he hablado de sis

saludos

tnt riva

DesaprobarAprobar-6tnt riva dijo el 23-11-2009 a las 19:01:

24

@mauro

Para lanzar el gestor de actualizaciones pulsar:
Sistema->Administración->Gestor de actualizaciones

Una vez finalizada la actualización y habiendo reiniciado el ordenador, pulsar la tecla ‘ESC’ para indicarle a grub que deseamos arrancar linux kernel 2.6.20-16 Generic

Dentro del sistema lanzar un terminal o consola e ingresar los siguientes comandos :

- Utilizar el punto 1. solo si en el futuro deseamos experimentar compilando nuestro kernel a medida sino ir al punto 2. Gracias Blaxter por la observación-

1. $ sudo apt-get install linux-source-2.6.20
1. $ ln -s /usr/linux/linux-source-2.6.20 /usr/src/linux

2. $ aptitude install linux-headers-2.6.20.16-generic

Importante: El signo $ no debe ser incluido ni copiado en el comando ya que únicamente es utilizado para representar nuestro home.-

Ahora viene lo divertido:

Descargar el ultimo controlador disponible en el sitio de nvidia, aquí el enlace: http://www.nvidia.com/object/unix.html

Importante: Descargar el controlador apropiado según nuestro ordenador y tarjeta de video. Allí encontraremos tanto las versiones para 32 bits como 64 bits. Al final del documento encontrarás una lista para una mejor comprensión.-

Ejemplo: Si nuestro ordenador es de 32 bits Intel y tenemos una tarjeta relativamente nueva, descargar Linux IA32
Latest Version: 100.14.19

Ahora será necesario remover algunos paquetes del sistema para evitar conflictos con el nuevo controlador. Para ello, utilizaremos synaptic para buscar y desinstalar dichos paquetes.-

Para lanzar synaptic pulsar:

Sistema->Administración->Gestor de paquetes Synaptic

Buscar uno por uno, pulsar click derecho y seleccionar marcar para eliminar.-

Los paquetes a eliminar son:

nvidia-glx
nvidia-settings
nvidia-kernel-common

Importante: Una vez marcados los paquetes, es necesario pulsar el botón ‘aplicar’ situado en la barra de herramientas.-

Ahora buscar e instalar:

build-essential

Pulsar click derecho y seleccionar marcar para instalar.-
Importante: Recordar pulsar el botón aplicar para aceptar los cambios.-

Nota: Los siguientes pasos se harán desde la consola, sugiero imprimir o escribir las instrucciones que aparecen a continuación.-

Finalizar la sesión GDM, para esto, abrir una terminal y teclear lo siguiente:

$ sudo /etc/init.d/gdm stop

Para obtener una consola que permita el inicio de sesion pulsamos:

CTRL+ALT+F1

Escribir nombre de usuario y contraseña, luego:

$ sudo su

Instalar el driver NVIDIA.

Ir a la carpeta donde descargamos el driver y teclear:

$ sudo sh NVIDIA-Linux-x86-100.14.19-pkg1.run

Importante: Si el archivo no puede ejecutarse, dar permisos de ejecución tecleando el comando:

$ sudo chmod +x NVIDIA-Linux-x86-100.14.19-pkg1.run

Seguir las instrucciones en pantalla y seleccionar YES en todas las preguntas durante la instalación. Asegurarse de contestar YES a la pregunta sobre la configuración del nuevo XSERVER.-

Cuando la instalación finalice, volverá nuevamente a la consola consola. -

Para reingresar en el modo gráfico, teclear el siguiente comando:

$ sudo /etc/init.d/gdm restart

Ahora esta todo listo. Ya tienes la ultima versión de controladores nvidia instalada en tu ubuntu.

Apartado: Seleccionando el controlador apropiado.

Descargar controladores en:
Como Instalar controladores nVidia en Ubuntu

http://www.nvidia.com/object/unix.html

Para 32 bits o 64 bits tenemos las siguientes opciones:

Latest Version: 100.14.19
Latest Legacy GPU version (1.0-71xx series): 1.0-7185
Latest Legacy GPU version (1.0-96xx series): 1.0-9639

REeeeeeeeeeeeeeeeeee facil…..

tnt

DesaprobarAprobar-6tnt dijo el 23-11-2009 a las 19:05:

25

Para lanzar el gestor de actualizaciones pulsar:
Sistema->Administración->Gestor de actualizaciones

Una vez finalizada la actualización y habiendo reiniciado el ordenador, pulsar la tecla ‘ESC’ para indicarle a grub que deseamos arrancar linux kernel 2.6.20-16 Generic

Dentro del sistema lanzar un terminal o consola e ingresar los siguientes comandos :

- Utilizar el punto 1. solo si en el futuro deseamos experimentar compilando nuestro kernel a medida sino ir al punto 2. Gracias Blaxter por la observación-

1. $ sudo apt-get install linux-source-2.6.20
1. $ ln -s /usr/linux/linux-source-2.6.20 /usr/src/linux

2. $ aptitude install linux-headers-2.6.20.16-generic

Importante: El signo $ no debe ser incluido ni copiado en el comando ya que únicamente es utilizado para representar nuestro home.-

Ahora viene lo divertido:

Descargar el ultimo controlador disponible en el sitio de nvidia, aquí el enlace: http://www.nvidia.com/object/unix.html

Importante: Descargar el controlador apropiado según nuestro ordenador y tarjeta de video. Allí encontraremos tanto las versiones para 32 bits como 64 bits. Al final del documento encontrarás una lista para una mejor comprensión.-

Ejemplo: Si nuestro ordenador es de 32 bits Intel y tenemos una tarjeta relativamente nueva, descargar Linux IA32
Latest Version: 100.14.19

Ahora será necesario remover algunos paquetes del sistema para evitar conflictos con el nuevo controlador. Para ello, utilizaremos synaptic para buscar y desinstalar dichos paquetes.-

Para lanzar synaptic pulsar:

Sistema->Administración->Gestor de paquetes Synaptic

Buscar uno por uno, pulsar click derecho y seleccionar marcar para eliminar.-

Los paquetes a eliminar son:

nvidia-glx
nvidia-settings
nvidia-kernel-common

Importante: Una vez marcados los paquetes, es necesario pulsar el botón ‘aplicar’ situado en la barra de herramientas.-

Ahora buscar e instalar:

build-essential

Pulsar click derecho y seleccionar marcar para instalar.-
Importante: Recordar pulsar el botón aplicar para aceptar los cambios.-

Nota: Los siguientes pasos se harán desde la consola, sugiero imprimir o escribir las instrucciones que aparecen a continuación.-

Finalizar la sesión GDM, para esto, abrir una terminal y teclear lo siguiente:

$ sudo /etc/init.d/gdm stop

Para obtener una consola que permita el inicio de sesion pulsamos:

CTRL+ALT+F1

Escribir nombre de usuario y contraseña, luego:

$ sudo su

Instalar el driver NVIDIA.

Ir a la carpeta donde descargamos el driver y teclear:

$ sudo sh NVIDIA-Linux-x86-100.14.19-pkg1.run

Importante: Si el archivo no puede ejecutarse, dar permisos de ejecución tecleando el comando:

$ sudo chmod +x NVIDIA-Linux-x86-100.14.19-pkg1.run

Seguir las instrucciones en pantalla y seleccionar YES en todas las preguntas durante la instalación. Asegurarse de contestar YES a la pregunta sobre la configuración del nuevo XSERVER.-

Cuando la instalación finalice, volverá nuevamente a la consola consola. -

Para reingresar en el modo gráfico, teclear el siguiente comando:

$ sudo /etc/init.d/gdm restart

Ahora esta todo listo. Ya tienes la ultima versión de controladores nvidia instalada en tu ubuntu.

Apartado: Seleccionando el controlador apropiado.

Descargar controladores en:
Como Instalar controladores nVidia en Ubuntu

http://www.nvidia.com/object/unix.html

Para 32 bits o 64 bits tenemos las siguientes opciones:

Latest Version: 100.14.19
Latest Legacy GPU version (1.0-71xx series): 1.0-7185
Latest Legacy GPU version (1.0-96xx series): 1.0-9639

REeeeeeeeeeeeeeeeeee facil…..

jajaj si y asi dicen los fanboys de oinux de que instlar un driver es facil todo es facil entre una vez en el foro ubuntu pregunte y me dijeron no eso es tan facil como hacer siguiente siguiente sguien en windows hasta un reciennacido lo ahce jjajaja

fanboys ciegos

Guruguru

DesaprobarAprobar-1Guruguru dijo el 23-11-2009 a las 19:10:

26

no habia caido en cta, fakeroot lo evidenció… lu único bueno fue q le tienen fe al xorg y q el 90% es lo mismo para todos los sitemas. Que abran o den especificaciones de ese 10% con que “se toca o conecta” con el kernel (soy un tremendo ignorante, no sé si con el kernel, con algun programa, no sé wn).

Ptas tampoco le tengo mucha fe a ati, hará falta un 3er actor para tener una buena gráfica que ande pero afinadísima en linux…

juan

DesaprobarAprobar7juan dijo el 23-11-2009 a las 19:31:

27

@Mauro
Que instalacion es esa?, apenas instalas linux (ubuntu) te aparece un icono arriba de controladores restrictivos, entre los cuales esta el de nvidia, pinchas ahi, seleccionas el controlador de la lista, le pones instalar y listo. y la wea de tarjeta funciona mejor que en windows.

“Para reingresar en el modo gráfico, teclear el siguiente comando:
$ sudo /etc/init.d/gdm restart”
¿de donde sacaste esa wea?Para que hacer eso?
Y pa que chucha instalas el build-essential? si eso es para otra cosa na que ver weon.

@trabajosesteban
En linux las tarjetas graficas que mejor funcionan son las nvidia ignorante de mierda!

Matias

DesaprobarAprobar1Matias dijo el 23-11-2009 a las 20:16:

28

Se agradece el análisis Franco. Buena onda aprender de estas cosas.

Anónimo

DesaprobarAprobar-1Anónimo dijo el 23-11-2009 a las 20:30:

29

Nvidia ha hecho muchos avances este año. Ati tiene drivers libres, pero poco funcionales en sistemas operativos no windows.

MRivera

DesaprobarAprobar14MRivera dijo el 23-11-2009 a las 21:10:

30

¿Es mucho pedir que los artículos de los otros autores sean así de elaborados?
Gracias Franco por generar contenido de calidad.

Deja tu Comentario

XHTML: Puedes usar: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Previsualizar comentario?