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

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

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

17 голосов | спросил user238204 21 Jpm1000000pmTue, 21 Jan 2014 12:50:14 +040014 2014, 12:50:14

1 ответ


21
  

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

     

Обзор

     

Чтобы использовать модуль с DKMS, вы устанавливаете файлы установки модуля (могут быть исходными или двоичными) в /usr /src /- вместе с файлом конфигурации dkms.conf, который сообщает DKMS, как создавать /настраивать модуль и как его зовут. В более сложных сценариях инструкции условного построения и исправления могут выполняться системой dkms, но, учитывая ваш случай, это может и не понадобиться.

     

Walk-через

     

Предположим, вы хотите установить модуль для вашего фантастического «Awesome Adapter». Вам предоставляется источник tarball awesome-20091211-v1.1.tgz.

     

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

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf
  

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

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes
  

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

     
  1. Команда для создания модуля (запустите make в каталоге src /).
  2.   
  3. Команда очистить исходное дерево (запустить make clean в каталоге src /).
  4.   
  5. Название модуля без расширения .o или .ko. Это может быть массив модулей, если построено несколько модулей, см. Man dkms.
  6.   
  7. Где DKMS может найти встроенный модуль.
  8.   
  9. Имя и версия DKMS должны ассоциироваться с модулем (ами).
  10.   
  11. Чтобы переделать образ initrd после установки модуля.
  12.   

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

     

Затем мы устанавливаем модуль в DKMS, копируя файлы установки модуля в исходное дерево ядра /usr /src /- и рассказываем DKMS о новом модуле:

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...
  

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

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree
  

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

     

Примеры

     

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

     

От: help.ubuntu.com

Дополнительная информация можетможно найти здесь:

ответил Rinzwind 21 Jpm1000000pmTue, 21 Jan 2014 13:21:00 +040014 2014, 13:21:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132