NVIDIA libero los controladores de vídeo para Linux
Hace poco Nvidia dio a conocer mediante un anuncio que ha tomado la decisión de liberar el código de todos los módulos del núcleo suministrados en su suite de controladores de vídeo para Linux.
El código liberado se ha abierto bajo las licencias MIT y GPLv2. La capacidad de crear módulos se proporciona para las arquitecturas x86_64 y aarch64 en sistemas con el kernel de Linux 3.10 y versiones más recientes, aunque las bibliotecas de espacio de usuario y firmware, como las pilas CUDA, OpenGL y Vulkan, siguen siendo propiedad de Nvidia.
Se espera que la publicación del código conduzca a un aumento significativo en la usabilidad de las GPU Nvidia en sistemas Linux, mejore la integración con el sistema operativo y simplifique la entrega de controladores y problemas de depuración.
Los desarrolladores de Ubuntu y SUSE ya han anunciado la formación de paquetes basados en módulos abiertos.
Tener módulos abiertos también facilitará la integración de controladores Nvidia con sistemas basados en compilaciones personalizadas no estándar del kernel de Linux. Para Nvidia, el código abierto mejorará la calidad y la seguridad de los controladores de Linux a través de una mayor participación de la comunidad y la capacidad de revisión de terceros y auditorías independientes.
Se observa que la base de código abierto presentada se usa simultáneamente en la formación de controladores propietarios, en particular, se usa en la rama beta 515.43.04 publicada hoy.
En este caso, el repositorio cerrado es el principal y la base de código abierta propuesta se actualizará para cada versión de controladores propietarios en forma de conversión después de cierto procesamiento y limpieza. No se proporciona el historial de cambios individuales, solo la confirmación general para cada versión del controlador (el código de módulos para el controlador 515.43.04 está publicado actualmente).
Sin embargo, los representantes de la comunidad tienen la oportunidad de enviar solicitudes de incorporación de cambios para promocionar sus correcciones y cambios en el código del módulo, pero estos cambios no se reflejarán como cambios separados en el repositorio abierto, sino que primero se integrarán en el repositorio cerrado principal y solo luego transferido con el resto de cambios para abrir. La participación en el desarrollo requiere la firma de un acuerdo sobre la transferencia de los derechos de propiedad del código transferido a NVIDIA (Contrato de licencia de colaborador).
El código del módulo del kernel se divide en dos partes: componentes comunes no vinculados al sistema operativo y una capa para interactuar con el kernel de Linux. Para reducir el tiempo de instalación, los componentes comunes aún se entregan en controladores patentados de NVIDIA en forma de un archivo binario ya ensamblado, y la capa se ensambla en cada sistema, teniendo en cuenta la versión actual del kernel y la configuración disponible. Se ofrecen los siguientes módulos de kernel: nvidia.ko, nvidia-drm.ko (Direct Rendering Manager), nvidia-modeset.ko y nvidia-uvm.ko (Unified Video Memory).
La compatibilidad con la serie GeForce y las GPU para estaciones de trabajo se considera de calidad alfa, pero las GPU dedicadas basadas en la arquitectura NVIDIA Turing y NVIDIA Ampere que se utilizan en el Centro de datos para la aceleración de datos y la computación en paralelo (CUDA) son totalmente compatibles, están totalmente probadas y son adecuadas para su uso en proyectos de producción (el código abierto ya está listo para reemplazar los controladores propietarios).
La estabilización de la compatibilidad con GeForce y GPU para estaciones de trabajo está prevista para versiones futuras. En última instancia, el nivel de estabilidad de la base de código abierto se llevará al estado de los controladores propietarios.
En su forma actual, la inclusión de módulos publicados en el kernel principal no es posible, ya que no cumplen con los requisitos del kernel para el estilo de codificación y las convenciones de arquitectura, pero Nvidia tiene la intención de trabajar junto con Canonical, Red Hat y SUSE para resolver este problema y estabilizar las interfaces de programación del controlador. Además, el código publicado se puede utilizar para mejorar el controlador principal de Nouveau de código abierto, que utiliza el mismo firmware de GPU que el controlador propietario.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.