Нещодавно я бачив кілька згадок про DKMS, але не ясно, що він насправді робить у моїй системі.
Що насправді робить DKMS і як я ним користуюся?
Нещодавно я бачив кілька згадок про DKMS, але не ясно, що він насправді робить у моїй системі.
Що насправді робить DKMS і як я ним користуюся?
Відповіді:
Пакет DKMS (Dynamic Kernel Module Support) ( http://linux.dell.com/dkms/ ) забезпечує підтримку встановлення додаткових версій модулів ядра. Пакет збирається та встановлюється у дерево ядра. Видалення відновлює попередні модулі. За замовчуванням установка знаходиться у поточному дереві ядра, але будь-яке дерево ядра може бути обране за допомогою параметрів командного рядка. Крім того, DKMS викликається автоматично при встановленні нових пакетів зображень ядра Ubuntu, і тому модулі, додані до DKMS, будуть автоматично перенесені через оновлення.
Огляд
Щоб використовувати модуль з DKMS, слід розмістити файли встановлення модуля (можуть бути вихідним кодом або двійковим кодом) в / usr / src / -, а також файл конфігурації dkms.conf, який повідомляє DKMS, як створити / налаштувати модуль і що його ім'я. За більш вдосконалених сценаріїв, умовні інструкції по збірці та виправлення можуть виконуватися системою dkms, але враховуючи ваш випадок, це може бути не потрібно.
Прохідна
Скажімо, ви хочете встановити модуль для вашого фантазії "Awesome Adapter". Вам дають джерело
tarball awesome-20091211-v1.1.tgz
.За допомогою DKMS ми розповідаємо DKMS, як це зробити для вас, створивши файл dkms.conf з відповідними записами. Наприклад, після того як ми розпакували тарбол:
# 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
- Команда для складання модуля (запустіть make у каталозі src /).
- Команда очистити вихідне дерево (виконати make clean в каталозі src /).
- Назва модуля без розширення .o або .ko. Це насправді може бути масив модулів, якщо вбудовано кілька модулів, див. Man dkms.
- Там, де DKMS може знайти вбудований модуль.
- Ім'я та версія DKMS повинні асоціюватися з модулем (модулями).
- Щоб переробити зображення initrd після встановлення модуля.
Ви також можете додати параметри для виклику скриптів до або після складання чи встановлення, надання додаткових (умовних) команд, команд виправлення тощо. Файл dkms.conf насправді розміщений у сценарії оболонки, тому можна виконати неабияку хитрість. якщо необхідно. Ці параметри та багато іншого описані в розділі dkms.conf в людині 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. Це не всебічна документація, але вона відповість на безліч питань. Це може допомогти вам відзначити наступні приклади, навіть якщо використовувані модулі не є тими, які ви хочете налаштувати:
- RocketRaid - Два приклади, як налаштувати драйвери Highpoint RocketRaid RR26xx та RR62x за допомогою DKMS.
Більше інформації можна знайти тут: