Драйверы-прослойки в ядре Linux предложили заблокировать

Проприетарные разработки глубоко проникли в код многих приложений и сервисов. В сложных системах избавиться от них очень непросто. Зачастую для этого используются обходные пути, которые скорее являются «костылями».

В ядре Linux для работы с проприетарными драйверами используются драйверы-прослойки, которые предназначены практически исключительно для трансляции обращений драйвера к ядру. У прослойки код открытый, так что проблемы с GPL-лицензией нет, формальности соблюдены.

Голос против

Но у такого подхода немало противников. Один из них — Кристоф Хелвиг (Christoph Hellwig), разработчик ядра Linux. Ранее он был членом управляющего технического комитета организации Linux Foundation. Также он выступал истцом в судебном процессе с VMware. Хелвиг предложил значительно ужесточить защиту от связывания проприетарных драйверов с компонентами ядра Linux.

Для этого он предлагает использовать патчи, которые дают возможность наследовать флаги, связанные с экспортом GPL-символов. В этом случае наследуется флаг TAINT_PROPRIETARY_MODULE во всех модулях, импортирующих символы из модулей с данным флагом. Суть защиты в том, что если драйвер-прослойка будет импортировать что-то не из GPL-модуля, то GPL-модуль унаследует метку TAINT_PROPRIETARY_MODULE и не сможет обращаться к компонентам ядра, доступным только для GPL-модулей.

Источник: 3dnews

В ходе обсуждения предложили и обратную блокировку. Так, если модуль импортирует EXPORT_SYMBOL_GPL, то в этом случае любые экспортируемые модулем символы не должны импортироваться теми модулями, которые не заявляют о совместимости с GPL. Предложение было сделано не Хелвигом, а другим участником дискуссии. Но Хелвиг согласился с ним. Скорее всего, Линус Торвальдс не пропустит это предложение, поскольку оно приведет к блокированию ряда подсистем ядра для проприетарных драйверов.

Предыстория

Весь сыр-бор разгорелся после публикации патчей с реализацией подсистемы netgpu. Эта подсистема дает возможность организовать прямой обмен данными между сетевой картой и GPU с выполнением обработки протокола силами CPU. На базе предложения можно сделать общую реализацию RDMA для обмена данными между GPU или внешней CXД.

Многие разработчики выразили недовольство подобными нововведениями, поскольку реализация доступна лишь для проприетарных драйверов NVIDIA через предоставляемую этими драйверами прослойку. Хелвиг даже назвал разработчика троллем.

В свою очередь, автор патча возразил, что подсистема не привязана к NVIDIA, так что ее поддержка может быть обеспечена для программных интерфейсов к GPU AMD и Intel. В конечном итоге продвижение netgpu в ядре признали невозможным до появления рабочей поддержки на основе таких свободных драйверов, как AMDGPU, Intel i915 или Nouveau.

Что еще почитать по теме

T-Rex 30 марта 2021

Что такое SMTP-протокол и как он устроен?

SMTP (Simple Mail Transfer Protocol) — протокол передачи почты. Он был представлен еще в 1982 году, но не теряет актуальности до сих пор. В статье разбираемся, какие задачи решает протокол и как он ра…
T-Rex 30 марта 2021
Владимир Туров 1 сентября 2020

Дело совершенно секретного iPod

Это был обычный серый день в конце 2005 года. Я сидел на рабочем месте и писал код для следующей версии iPod. Вдруг без стука ворвался директор ПО для iPod, начальник моего начальника, и закрыл дверь.
Владимир Туров 1 сентября 2020
T-Rex 21 августа 2020

TrendForce: цены на SSD упадут

Эксперты DRAMeXchange предсказывают значительное падение цен на оперативную память и твердотельные накопители в ближайшее время. Причина — сокращение спроса на чипы для NAND и DRAM.
T-Rex 21 августа 2020

Новое в блоге

Михаил Фомин 24 июня 2022

Docker Swarm VS Kubernetes — как бизнес выбирает оркестраторы

Рассказываем, для каких задач бизнесу больше подойдет Docker Swarm, а когда следует выбрать Kubernetes.
Михаил Фомин 24 июня 2022
Ульяна Малышева 30 сентября 2022

«Нулевой» локальный диск. Как мы запустили облако только с сетевыми дисками и приручили Ceph

Чем хороши сетевые диски и почему именно Ceph, рассказал директор по развитию ядра облачной платформы Иван Романько.
Ульяна Малышева 30 сентября 2022
Валентин Тимофеев 30 сентября 2022

Как проходит онбординг сотрудников ИТО? Что нужно, чтобы выйти на смену в дата-центр

Рассказываем, как обучаем новых сотрудников, какие задачи и испытания проходят инженеры прежде, чем выйти на свою первую смену.
Валентин Тимофеев 30 сентября 2022
T-Rex 28 сентября 2022

Книги по SQL: что почитать новичкам и специалистам

Собрали 6 книг, которые помогут на старте изучения SQL и при углублении в тему.
T-Rex 28 сентября 2022