Проект Chimera Linux объявил о прогрессе в работе проприетарных графических драйверов NVIDIA в дистрибутиве Linux на основе musl, что решает давнюю проблему совместимости для пользователей графических процессоров NVIDIA в системах Linux, использующих musl вместо glibc.
До сих пор совместимость с проприетарными драйверами NVIDIA была серьёзным препятствием для Chimera Linux, поскольку проприетарные пользовательские библиотеки NVIDIA созданы на основе glibc, что делает их несовместимыми с musl без внесения изменений. Несмотря на то, что существуют альтернативы с открытым исходным кодом, такие как Nouveau и NVK, они имеют существенные ограничения по производительности, особенно на старом оборудовании NVIDIA.
Но теперь экспериментальные пакеты доступны в виде ожидающего рассмотрения запроса на включение как для устаревшей ветки драйверов NVIDIA 580, так и для более новой серии 620. Реализация ориентирована на архитектуры x86_64 и AArch64, хотя последняя была протестирована в ограниченном объеме.
По словам разработчиков, первым шагом стало переключение Chimera Linux на GLVND, что позволяет использовать в одной системе несколько реализаций OpenGL, включая Mesa и проприетарные драйверы NVIDIA. Это особенно полезно для ноутбуков с гибридными графическими конфигурациями.
Затем разработчики использовали gcompat — уровень совместимости, предоставляющий отдельные функции glibc, отсутствующие в musl. Однако библиотеки NVIDIA требовали дополнительных изменений, поэтому в проекте также использовался patchelf для настройки зависимостей библиотек и добавления необходимых компонентов для обеспечения совместимости.
Еще одним препятствием были непрямые функции GNU, поддерживаемые glibc, но исключенные из musl. Чтобы решить эту проблему, разработчики представили пакет musl с исправлениями под названием musl-nvidia, в котором была добавлена поддержка необходимых перемещений.
Дальнейшее тестирование выявило проблемы с инициализацией мьютексов, поскольку проприетарные библиотеки NVIDIA предполагают определенное поведение, характерное для glibc, которое musl реализует иначе. Чтобы решить эту проблему, была разработана отдельная библиотека совместимости для трансляции соответствующих операций с мьютексами, что позволило устранить зависания графических приложений во время первоначального тестирования.
С этими изменениями проект успешно протестировал драйвер NVIDIA 580 на видеокарте GeForce GTX 980 Ti. Более новый драйвер 620 также работал с RTX 3070 Ti, а предварительное тестирование показало, что он хотя бы частично работает на оборудовании AArch64.
Однако, несмотря на эти результаты, проприетарная поддержка NVIDIA в Chimera Linux остается экспериментальной. Разработчики признают, что пакет нуждается в доработке и дополнительном тестировании на оборудовании, прежде чем его можно будет использовать повсеместно.
Подробнее об этом читайте в анонсе.
