Недавно Nvidia представила через рекламу принял решение выпустить код всех модулей ядра, поставляемых в вашем наборе видеодрайверов для Linux.
Выпущенный код был выпущен под лицензиями MIT и GPLv2. Возможность создавать модули предоставляется для архитектур x86_64 и aarch64 в системах с ядром Linux версии 3.10 и новее, хотя прошивки и библиотеки пользовательского пространства, такие как стеки CUDA, OpenGL и Vulkan, остаются собственностью Nvidia.
Ожидается, что публикация кодекса привести к значительному увеличению об удобстве использования графических процессоров Nvidia в системах Linux, улучшить интеграцию с операционной системой и упростить доставку драйверов и проблемы с отладкой.
Разработчики Ubuntu и SUSE уже объявили о формировании пакетов на основе открытых модулей.
Наличие открытых модулей также упростит интеграцию драйверов Nvidia с системами, основанными на пользовательских нестандартных сборках ядра Linux. Для Nvidia открытый исходный код улучшит качество и безопасность драйверов Linux за счет расширения участия сообщества и возможности стороннего обзора и независимого аудита.
Отмечается, что представленная база с открытым исходным кодом одновременно используется при формировании проприетарных драйверов, в частности, используется в выпущенной сегодня бета-ветке 515.43.04.
В этом случае, закрытый репозиторий является основным репозиторием, и предлагаемая база открытого исходного кода будет обновляться для каждой версии проприетарных драйверов в виде конвертации после некоторой обработки и очистки. Индивидуальная история изменений не предоставляется, только общая фиксация для каждой версии драйвера (код модулей для драйвера 515.43.04 в настоящее время выпущен).
Тем не менее, представители сообщества имеют возможность подать заявки потяните за вкладку, чтобы продвигать свои исправления и изменения кода модуля, но эти изменения не будут отражены как отдельные изменения в открытом репозитории, но сначала будет интегрирован в основной закрытый репозиторий и только потом переносится с остальными изменениями в опен. Участие в разработке требует подписания договора о передаче прав собственности на передаваемый код NVIDIA (Contributor License Agreement).
Код модуля ядра разделен на две части: общие компоненты, не привязанные к операционной системе, и слой для взаимодействия с ядром Linux. Для сокращения времени установки общие компоненты по-прежнему поставляются в проприетарных драйверах NVIDIA в виде предварительно собранного бинарного файла, а слой собирается на каждой системе с учетом текущей версии ядра и доступной конфигурации. Предоставляются следующие модули ядра: nvidia.ko, nvidia-drm.ko (директор прямой визуализации), nvidia-modeset.ko и nvidia-uvm.ko (унифицированная видеопамять).
La поддержка графических процессоров серии GeForce и рабочих станций считается альфа-качеством, но выделенные графические процессоры на базе архитектуры NVIDIA Turing и NVIDIA Ampere, используемые в Центре обработки данных для параллельных вычислений и ускорения данных (CUDA), полностью поддерживаются, полностью протестированы и подходят для использования в корпоративных проектах. проприетарные драйверы).
стабилизация поддержки GeForce и GPU для рабочих станций это планируется для будущих версий. В конечном итоге уровень стабильности базы с открытым исходным кодом будет доведен до состояния проприетарных драйверов.
В текущем виде включение опубликованных модулей в основное ядро невозможно, так как они не соответствуют требованиям ядра по стилю кодирования и архитектурным соглашениям, но Nvidia намерена сотрудничать с Canonical, Red Hat и SUSE для решения этой проблемы и стабилизации интерфейсов программирования контроллера. Кроме того, выпущенный код можно использовать для улучшения драйвера ядра Nouveau с открытым исходным кодом, который использует ту же прошивку графического процессора, что и проприетарный драйвер.
наконец, если вы интересно узнать о нем больше, вы можете проверить детали в по следующей ссылке.