Из Debian удалены сборки пакетов с драйверами NVIDIA из-за подозрений в несовместимости с GPL
Инициированное организацией Software Freedom Conservancy (SFC) разбирательство в отношении поставки модуля с реализацией файловой системы ZFS в составе Ubuntu Linux привлекло внимание к вопросу легальности поставки проприетарных драйверов в составе дистрибутивов. Разработчики проекта Debian рассмотрели вопрос размещения в репозиториях проекта проприетарных драйверов NVIDIA и пришли к выводу, что поставка их готовых сборок в дистрибутиве может нарушать лицензию GPLv2, под которой распространяется ядро Linux.
Несколько часов назад из non-free репозитория Debian был удалён пакет nvidia-graphics-modules и все основанные на нём сборки пакетов с модулями ядра "nvidia-kernel-*" (пакеты вручную удалены из Unstable, из Testing и остальных веток они будут удалены или заменены на заглушки через некоторое время после проверки). Пакеты nvidia-kernel-dkms и nvidia-kernel-source оставлены в составе дистрибутива и могут быть использованы для сборки модуля для драйверов NVIDIA из исходных текстов. В дистрибутиве также оставлен пакет nvidia-graphics-drivers со скриптом, загружающим и устанавливающим драйверы с сайта NVIDIA. При попытке установки пакета nvidia-driver автоматически будет выбран nvidia-kernel-dkms.
Напомним, что для соблюдения требований лицензии GPL производители проприетарных драйверов загружают в ядро модуль-прослойку, код которого открыт и распространяется под лицензией GPLv2, но функции ограничены загрузкой закрытых компонентов драйвера, оформленных в виде бинарного блоба. До сих пор подобный обходной манёвр считался приемлемым и устраивал все заинтересованные стороны, как разработчиков ядра, так и производителей драйверов. В настоящее время в суде разбирается дело против компании VMware, в которой организация Software Freedom Conservancy пытается доказать неправомерность встраивания компонентов в ядро Linux через модули-обвязки под лицензией GPL.
В случае с VMware модуль-прослойка vmklinux используется для организации доступа проприетарных компонентов к API ядра, относящемуся к области EXPORT_SYMBOL_GPL, использование вызовов в которой воспринимается как создание производной работы, которая должна поставляться под GPL. В случае с NVIDIA, загружаемый в ядро модуль-прослойка применяется для трансляции доступа бинарного блоба к таким средствам ядра (не относятся к EXPORT_SYMBOL_GPL), как procfs, механизмы отслеживания горячего подключения CPU и seq_file, а также для создания обвязок над вызовами console_lock и console_unlock.
Решение Debian связано только с поставкой готовых бинарных сборок проприетарных драйверов. На уровне распространения исходных текстов модуля-обвязки о нарушении GPL пока речь не ведётся. Если сравнивать ситуацию с поставкой модуля zfs.ko, то он распространяется под лицензией CDDL, предъявляющей требования, отличающиеся от GPL и не допускающей перелицензирование итогового продукта под GPL, что приводит к невозможности совместного распространения модуля zfs.ko и ядра Linux. Что касается проприетарного драйвера NVIDIA, то его лицензия запрещает декомпиляцию, не даёт права получить доступ к коду и не позволяет перелицензировать итоговый производный продукт. Таким образом, по аналогии с ZFS, лицензия на драйвер NVIDIA также не позволяет легально организовать поставку комбинированного с GPL продукта.