Las gráficas Nvidia Turing comenzarán a usar los módulos abiertos del Kernel
Hace pocos días NVIDIA dio a conocer la noticia de que en el próximo lanzamiento de sus controladores propietarios «NVIDIA 560», se utilizará de forma predeterminada los módulos abiertos del kernel de Linux en sistemas con GPU basadas en la microarquitectura Turing (GeForce GTX 1600 y RTX 2000) y versiones más nuevas.
Con este cambio, a partir de esta versión los módulos abiertos y propietarios no podían utilizarse simultáneamente ni coexistir en el mismo sistema de archivos. Es decir, ahora los módulos abiertos solo se pueden usar con GPU que tienen un microcontrolador GSP (GPU System Processor) independiente, como las microarquitecturas Turing, Ampere y Ada. Para las GPU más antiguas sin GSP, como las basadas en microarquitecturas Maxwell, Pascal y Volta, se seguían utilizando módulos propietarios.
La primera publicación se actualizó para señalar que, a partir de la versión 560, la versión abierta de los módulos del kernel se instalará de forma predeterminada mediante el paquete del archivo .run cuando las GPU adecuadas estén presentes en el momento de la instalación.
También se menciona que a partir del lanzamiento de los controladores «NVIDIA 560», esta situación cambiará: para las GPU basadas en Turing y versiones posteriores, y para la virtualización de GPU a partir de Ada, los módulos del kernel abiertos nvidia.ko, nvidia-modeset.ko, nvidia-uvm.ko, nvidia-drm.ko y nvidia-peermem.ko se instalarán por defecto, siempre que sea posible su uso.
Hay que recordar que el código de estos módulos de NVIDIA fue abierto en 2022 bajo las licencias MIT y GPLv2 y se actualiza sincrónicamente con cada nueva versión de los controladores propietarios. Hasta ahora, aunque los módulos abiertos estaban disponibles, los controladores propietarios de NVIDIA seguían utilizando versiones propietarias de los módulos, que se desarrollaban por separado aunque compartían una base de código común.
NVIDIA realizó este movimiento con la finalidad de que se mejorara significativamente la usabilidad de las GPU NVIDIA en sistemas Linux, además de que también quería que se fortaleciera la integración con el sistema operativo y simplificara la entrega de controladores y la depuración de problemas.
Además, NVIDIA quería que la disponibilidad de módulos abiertos también facilitara la integración de los controladores NVIDIA con sistemas basados en compilaciones personalizadas del kernel de Linux. Para NVIDIA, el código abierto es un conducto que ayudará a mejorar la calidad y seguridad de los controladores de Linux mediante una interacción más estrecha con la comunidad y la posibilidad de revisión y auditoría independiente de los cambios.
Esto se logra gracias a la colaboración de los miembros de la comunidad, los cuales tienen la oportunidad de enviar solicitudes de extracción para contribuir con sus correcciones y cambios en el código del módulo. Aunque estos cambios no se reflejarán inmediatamente como modificaciones separadas en el repositorio público, sino que primero se integrarán en el repositorio privado principal y posterior a las pruebas y aprobación se transfieren junto con otros cambios al repositorio público. Para participar en el desarrollo, es necesario firmar un acuerdo de transferencia de derechos de propiedad del código enviado a NVIDIA (Acuerdo de Licencia de Colaborador).
El código de los módulos del kernel se divide en dos partes: componentes generales que no están vinculados al sistema operativo y una capa para la interacción con el kernel de Linux. Para reducir el tiempo de instalación, los componentes comunes se suministran en los controladores propietarios de NVIDIA en forma de un archivo binario precompilado, mientras que la capa específica del kernel se compila en cada sistema según la versión actual del kernel y la configuración existente. Los módulos del kernel disponibles incluyen: nvidia.ko, nvidia-drm.ko (Direct Rendering Manager), nvidia-modeset.ko y nvidia-uvm.ko (Unified Video Memory). Estos módulos solo admiten GPU basadas en las microarquitecturas Turing y Ampere, lanzadas desde septiembre de 2018.
Finalmente, si estas interesado en poder instalar los módulos de kernel propietarios, será necesario especificar la opción «–kernel-module-type=proprietary» al ejecutar el instalador de los controladores NVIDIA. En el futuro, NVIDIA planea dejar de ofrecer soporte para nuevas GPU en los módulos propietarios y centrarse exclusivamente en el desarrollo de los módulos abiertos.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.