Dkms ubuntu что это

Автоматическая сборка модуля ядра ОС с помощью фреймворка DKMS в Linux

Оригинал: How to build a kernel module with DKMS on Linux
Автор: Dan Nanni
Дата публикации: 8 апреля 2016 г.
Перевод: А.Панин
Дата перевода: 24 июля 2016 г.

Автоматическая сборка модуля ядра ОС с помощью фреймворка DKMS в Linux

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

А теперь подумайте о том, что произойдет, если вы впоследствии обновите версию ядра ОС. Ваш драйвер был собран вне официального дерева исходных кодов ядра Linux, поэтому при обновлении версии ядра ОС драйвер перестанет корректно функционировать.

Как же решить данную проблему? Ну, вам придется повторно скомпилировать версию драйвера устройства, которая будет совместима с текущей версией ядра ОС, и установить ее в систему. Очевидно, что пересборка драйвера при каждом обновлении ядра ОС является не самым оптимальным решением.

В подобной ситуации может оказаться весьма полезным фреймворк динамической поддержки модулей ядра DKMS (Dynamic Kernel Module Support). Фреймворк DKMS позволяет осуществлять автоматическую пересборку модулей ядра Linux с использованием текущего дерева его исходных кодов по мере обновления версий. Производители аппаратного обеспечения нередко выпускают драйверы в виде пакетов DKMS, поэтому пользователи могут свободно обновлять версии ядер своих систем, не заботясь о сборке совместимых версий драйверов устройств. Конечный пользователь может настроить DKMS с целью автоматической пересборки любого драйвера устройства или модуля, исходный код которого не является частью официального дерева исходных кодов ядра Linux.

В рамках данной статьи я постараюсь продемонстрировать методику настройки механизма автоматической пересборки модуля ядра ОС на основе фреймворка DKMS в Linux.

Установка компонентов фреймворка DKMS в Linux

Debian, Ubuntu и Linux Mint:

В первую очередь следует подключить репозиторий EPEL, после чего достаточно выполнить следующую команду:

Автоматическая сборка модуля ядра ОС с помощью фреймворка DKMS

Теперь давайте разберемся с тем, как настроить фреймворк DKMS для автоматической пересборки модуля ядра ОС после обновления последнего. По сути, вам придется создать файл конфигурации DKMS для сборки и установки выбранного модуля ядра ОС в систему. После его создания установка всех обновлений ядра ОС будет инициировать пересборку заданного модуля средствами DKMS.

После этого нужно создать файл конфигурации с именем dkms.conf в этой же директории.

Далее следует добавить исходный код данного модуля в дерево исходного кода ядра ОС на уровне фреймворка DKMS:

Более простая эквивалентная команда:

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Теперь нужно собрать версию данного модуля, совместимую с текущей версией ядра ОС:

В данном случае также может использоваться более простая эквивалентная команда:

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Наконец, нужно установить модуль, совместимый с текущей версией ядра ОС, в систему:

Разумеется, вы также можете воспользоваться более простой эквивалентной командой:

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

На данный момент модуль ядра ОС должен быть успешно установлен в систему. Вы можете проверить статус его установки с помощью следующей команды:

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Проверка работоспособности механизма автоматической пересборки модуля после обновления ядра ОС

Перед обновлением необходимо узнать версии драйвера ixgbe и текущего ядра ОС.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

А теперь попробуем установить новую версию ядра ОС и соответствующих заголовочных файлов:

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Обратите внимание на то, при обновлении версии ядра ОС без установки соответствующего набора заголовочных файлов сборка модуля средствами DKMS попросту не будет инициирована, следовательно, драйвер устройства не будет пересобран из своих исходных кодов. Вместо него будет использоваться официальный драйвер из состава новой версии ядра ОС (если такой доступен).

Например, ниже показан результат обновления ядра ОС без установки соответствующих заголовочных файлов, причем несложно заметить, что в результате был загружен немного устаревший драйвер устройства ixgbe из его состава.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Вы всегда можете пересобрать необходимый драйвер устройства средствами DKMS, самостоятельно инициировав его сборку. Конечно же, перед этим этом следует убедиться в наличии в системе заголовочных файлов для текущей версии ядра ОС.

Заключение

В данной статье была продемонстрирована методика использования фреймворка DKMS для автоматической пересборки модуля ядра ОС. Бесспорно, использование фреймворка DKMS не всегда является оправданным решением, особенно в системах Linux, находящихся в промышленной эксплуатации, в которых обычно запрещена установка компонентов сборочного инструментария. Но при этом DKMS значительно упрощает жизнь разработчиков программного обеспечения и пользователей персональных настольных систем, автоматически собирая необходимые модули ядра ОС по мере установки его обновлений.

Источник

Что делает DKMS? Как мне это использовать?

Недавно я видел несколько упоминаний о DKMS, но не совсем понятно, что на самом деле он делает в моей системе.

Что на самом деле делает DKMS и как мне его использовать?

Пакет DKMS (поддержка динамического модуля ядра) ( http://linux.dell.com/dkms/ ) обеспечивает поддержку установки дополнительных версий модулей ядра. Пакет компилируется и устанавливается в дерево ядра. Удаление восстанавливает предыдущие модули. По умолчанию установка выполняется в текущем дереве ядра, но любое дерево ядра можно выбрать с помощью параметров командной строки. Кроме того, DKMS вызывается автоматически при установке новых пакетов образа ядра Ubuntu, и поэтому модули, добавленные в DKMS, будут автоматически переноситься через обновления.

обзор

Прохождение

В DKMS мы сообщаем DKMS, как это сделать, создав файл dkms.conf с соответствующими записями. Например, после того, как мы распаковали архив:

Внутри dkms.conf мы могли бы добавить строки:

Все каталоги соответствуют местоположению файла dkms.conf. Это говорит DKMS

Вы также можете добавить опции для вызова сценариев до или после сборки или установки, предоставить дополнительные (условные) команды make, команды patch и т. Д. Файл dkms.conf фактически поставляется в виде сценария оболочки, так что можно сделать немало хитростей. если необходимо. Эти и другие параметры описаны в разделе dkms.conf в man dkms.

Это оно! DKMS теперь добавил наш модуль в свой список модулей для сборки для будущих установок ядра. Чтобы убедиться, что он работает и установить модуль в наше текущее ядро, мы можем дать команду dkms для сборки и установки модуля:

Если повезет, ваш модуль будет установлен и переустановлен в будущих обновлениях ядра.

Примеры

Страница людей DKMS имеет полезную информацию о настройке вашего любимого модуля ядра для использования с DKMS. Это не полная документация, но она ответит на множество вопросов. Это может помочь вам отметить следующие примеры, даже если используемые модули не являются теми, которые вы хотите установить:

Более подробную информацию можно найти здесь:

Источник

Dynamic Kernel Module Support (Русский)

Dynamic Kernel Module Support (DKMS) — это фреймворк, который используется для генерации тех модулей ядра Linux, которые в общем случае не включены в дерево исходного кода. DKMS позволяет драйверам устройств автоматически пересобираться, когда ядро уже установлено.

Это означает, что пользователь может не ждать, пока какая-то компания, проект или сопроводитель пакета выпустит новую версию модуля. После введения хуков pacman пересборка модулей осуществляется автоматически во время обновления ядра.

Contents

Установка

Значительное число модулей, не включенных в ядро, имеют DKMS вариант; некоторые из них размещаются в официальных репозиториях, но большинство из них можно найти только в AUR.

Обновления

Обычно пересборка модулей DKMS во время обновления ядра выполняется бесшовно, но что-то может пойти не так. Следует обратить особое внимание на вывод pacman! Это, в частности, относится к тем системам, которым требуется модуль DKMS для успешной загрузки и/или если вы используете DKMS с ядром не из официальных репозиториев.

Для того, чтобы следовать изменениям в ядре, исправить ошибки или добавить необходимый функционал, подумайте об обновлении соответствующего пакета DKMS перед перезагрузкой.

Использование

Использование DKMS вручную.

Автозавершение по Tab будет доступно после выполнения команды:

Список модулей

Чтобы увидеть текущее состояние модулей, версий и ядер внутри дерева, выполните:

Пересборка модулей

Пересборка всех модулей для текущего ядра:

или для конкретного ядра:

Сборка конкретного модуля для текущего ядра:

Сборка модуля для всех ядер:

Удаление модулей

Удаление модуля (старые автоматически не удаляются):

Если пакет dkms удален, то теряется информация о предыдущих файлах сборки модуля. В этом случае, перейдите в директорию /usr/lib/modules/kernel_release и /var/lib/dkms/package_name и удалите все файлы и каталоги, которые больше не используются.

Создание DKMS пакета

Initial ramdisk

Например, когда используется linux и mkinitcpio, то для обновления модуля ZFS после каждого zfs-dkms AUR апгрейда,

Вы можете добавить больше таргетов в хук и сделать дополнительные копии хука, если в вашей система установлены другие ядра. Префикс 90- необходим для гарантированного запуска после хуков DPKMS.

Источник

Ubuntu Developer Week: Пакуем модули ядра с DKMS

Краткая компиляция irc-чата в рамках Ubuntu Developer Week на тему «Packaging Kernel modules with DKMS»

Смотрю я на список материалов январского Ubuntu Developer Week и глаз радуется. Много хорошего материала было рассмотрено в добровольно-принудительном общении разработчиков с комьюнити. Начнем сегодня с разговора о ядерных модулях и одном замечательном фреймворке для ухода за ними.

DKMS — это, по мнению докладчика, программа, позволяющая легко управлять исходниками модулей и автоматически собирать их с требуемой версией ядра. В основном эту систему используют те, кто нуждается в сторонних модулях для дистрибутивного ядра. Еще DKMS используют с модулями от производителей железа, содержащих в себе бинарные или закрытые части (broadcom, fglrx, nvidia).

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

Ок, пока качается видео ролик презентации от Бена, рассмотрим тему сами. У меня как раз есть в системе подходящий модуль на роль подопытного. Ядро моей Убунты не содержит драйвера веб-камеры ноутбука, поэтому пройдем все этапы его сборки с применением DKMS.

Устанавливаем сам фреймворк:
sudo aptitude install dkms
Смотрим что у нас есть:
dkms status
Получаем исходники драйвера прямо из апстрима:
sudo git clone repo.or.cz/r/microdia.git /usr/src/microdia-v2009.01
Создаем по шаблону конфигурацию:
sudo cp /usr/share/doc/dkms/sample.conf /usr/src/microdia-v2009.01/dkms.conf
Затем редактируем:
sudo vim /usr/src/microdia-v2009.01/dkms.conf
Приводим dkms.conf к следующему виду:
PACKAGE_VERSION=»v2009.01″
PACKAGE_NAME=»microdia»

Теперь ждем когда очередное обновление ядра Jaunty протестирует эту автосборку. А пока радуемся рабочей веб-камере и не забываем, что у Дебиана(а значит и Убунту) есть родной module-assistant для подобных целей.

Источник

Зачем нужен DKMS?

Прочитал о выходе нового драйвера NVidia, и что в нем «обеспечена возможность динамической пересборки модуля ядра Linux с использованием DKMS». Почитал про DKMS тут и тут. Не понял где профит.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

«Выращиваю зерно, мелю его, завожу тесто, пеку. В чем профит от булочных?»

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Профит проявляется в бинарных дистрибутивах.
Хотя megabaks пилил скрипт dkms и для gentoo.
Достаточно удобная вещь. Я просто обновляю ядро и перезагружаю машину, а все зависящие модули автоматически при загрузке системы обнаруживаются и пересобираются под текущее ядро.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Спасибо за подъем настроения в нерадостное субботне-похмельное утро. Вопрос изрядно посмешил 🙂

Профит проявляется в бинарных дистрибутивах.

Похоже на самый правильный ответ.

P. S. Я рад что я на Gentoo и не имею этих проблем.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Но оно ж не мониторит систему на предмет нового ядра!

И что, когда я в grub выберу другое ядро, оно мне перезагрузке все «внешние» модули будет перекомпилировать.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

да, если они не собраны для данного ядра
//ты бы хоть погуглил чтоль.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

И что, когда я в grub выберу другое ядро, оно мне перезагрузке все «внешние» модули будет перекомпилировать.

да, если они еще не были для этого ядра скомпилированы.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

вообще довольно удобная штука. все руки не доходят к арчу прикрутить ее.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Хм. Это с невидией такое только? На AMD столько *-hook, что я сначала не знал какой выбрать

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Хм. Это с невидией такое только? На AMD столько *-hook, что я сначала не знал какой выбрать

у меня на dkms нвидия висела, lirc и virtualbox.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

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

Не прошло и ста лет.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

обеспечена возможность динамической пересборки модуля ядра Linux с использованием DKMS

А, а я то думал что я просто делал что то не так, что у меня после установки самосборных ядер приходится драйвер Энвидии вручную переустанавливать.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

Он и не нужен. Нужны нормальные дистрибутивы со стабилизированным ABI ядра.

Dkms ubuntu что это. Смотреть фото Dkms ubuntu что это. Смотреть картинку Dkms ubuntu что это. Картинка про Dkms ubuntu что это. Фото Dkms ubuntu что это

В нормальных дистрах майнтейнеры сами собирают все внешние модули.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *