Создание пакета DKMS для модуля ядра, зависимость от заголовка ядра

Фон

Я разработал драйвер устройства Linux (ASoC). Теперь я хотел бы выпустить его как пакет DKMS. Целевой машиной является Raspberry Pi с Raspbian.

проблема

Мой исходный код зависит от заголовочного файла из Linux /sound/soc/codecs/ каталог. Этот файл не существует на целевой машине.

Обходной путь 1

Я мог бы добавить требуемый заголовочный файл в мой пакет DKMS. Но это не так, потому что я думаю, что я должен использовать заголовочный файл из исходного кода ядра, для которого создается модуль (например, 4.6, 4.7 ...).

Обходной путь 2

Я мог бы сказать конечному пользователю загрузить весь исходный код ядра (apt-get source ...) до сборки модуля. Но установка более 700 МБ только из-за одного заголовочного файла тоже не подходит. Посылка kernel-headers- не содержит файл, который мне нужен.

Вопрос

Есть ли лучшее решение, чем два обходных пути? Что ты предлагаешь?

1 ответ

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

Конечно, лучше сохранить атрибуты для этого заголовка, но, поскольку вы используете DKMS, ваш проект, вероятно, совместим с лицензией ядра Linux (GPL).


Другой подход - использовать заголовок из ядра, для которого вы строите, - более сложен с точки зрения пользователя. Поэтому его следует использовать только тогда, когда это действительно необходимо. Например, когда заголовок в вопросе описывает некоторые внутренние компоненты ядра, которые вы используете в своем модуле. В этом случае вы не можете использовать один (предварительно скопированный) файл для всех целевых ядер.

Другие вопросы по тегам