Dynamic kernel module support (російський)

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

Це означає, що користувач може не чекати, поки якась компанія, проект або супровідник пакета випустить нову версію модуля. Після введення Pacman # Hooks Перезбірка модулів здійснюється автоматично під час оновлення ядра.

Встановіть пакет dkms та заголовки вашого ядра (linux-headers - заголовки ядра за замовчуванням).

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

оновлення

Примітка: pacman не бере до уваги залежності, коли збирати заново модулі DKMS. Як наслідок, це призведе до помилок під час складання, якщо один модуль DKMS залежить від іншого (наприклад zfs-dkms AUR). Дивіться наступний звіт про помилку FS # 52901. dkms-sorted AUR додає експериментальну підтримку для подібних залежностей; технічно це зміна тарифного плану `dkms`. Найпростіший спосіб спробувати - встановити dkms-sorted AURперед установкою будь-яких DKMS модулів.

Зазвичай Перезбірка модулів DKMS під час поновлення ядра виконується бесшовно, але щось може піти не так. Слід звернути особливу увагу на висновок pacman. Це, зокрема, відноситься до тих систем, яким потрібно модуль DKMS для успішного завантаження і / або якщо ви використовуєте DKMS з ядром не з офіційних репозиторіїв.

Використання

Використання DKMS вручну.

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

список модулів

Щоб побачити поточний стан модулів, версій і ядер всередині дерева, виконайте:

Перезбірка модулів

Перезбірка всіх модулів для поточного ядра:

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

Збірка конкретного модуля для поточного ядра:

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

видалення модулів

Видалення модуля (старі автоматично з сайту не видаляються):

Якщо пакет dkms видалений, то втрачається інформація про попередні файлах збірки модуля. В цьому випадку, перейдіть в директорію / usr / lib / modules / KERNELVERSION-ARCH і видаліть файли і / або папки, які більше не використовуються.

Створення DKMS пакета

Нижче наведено деякі рекомендації, яких необхідно дотримуватися при створенні пакета DKMS.

Назва пакета

Пакети DKMS позначають приписуванням "-dkms" до вихідного пакунком.

Змінна $ _pkgname часто використовується після $ pkgname. щоб описати назву пакета без "-dkms" (наприклад, _pkgname = $). Це корисно для того, щоб зберігалося схожість між вихідним PKGBUILD пакета і його DKMS варіантом.

залежності

Залежності повинні успадковуватися від оригінального пакету з додаванням dkms і видаленням linux-headers (так як він вказаний у пакеті dkms як необов'язковий).

Побудова директорії для вихідних файлів

Збірка вихідних файлів повинна відбуватися в (складальна директорія за замовчуванням):

В директорії, де зберігаються пакети, конфігуратор DKMS говорить DKMS, як побудувати модуль (dkms.conf), включаючи змінні PACKAGE_NAME і PACKAGE_VERSION.

  • PACKAGE_NAME - ім'я проекту (зазвичай $ _pkgname або $ _pkgbase).
  • PACKAGE_VERSION - за згодою це також повинно бути $ pkgver.

застосування патчів

До вихідних файлів можна застосувати патчі безпосередньо в PKGBUILD або через dkms.conf.

Автоматичне завантаження модуля в .install

Завантаження і вивантаження модулів слід залишити користувачеві. З огляду на те, що може відбутися збій модуля при завантаженні.

Крім того, вам не потрібно кожен раз запускати depmod. щоб оновити залежності модуля ядра. Pacman автоматично викликає dkms install і dkms remove. як хукі. dkms install гарантує, що depmod буде запущений після закінчення процесу. dkms install залежить від dkms build (щоб зібрати вихідні для поточного ядра), який, в свою чергу, залежить від dkms add (щоб створити символічне посилання на / var / lib / dkms /// Source в / usr / src / ).

висновок namcap

Використання namcap (інструмент, який намагається перевірити поширені помилки і нестандартні рішення в пакеті) це хороша практика, слід хоч раз перевірити будь-який пакет за допомогою цього інструменту; проте, він ще не був оновлений для використання зі специфічними пакетами DKMS.

Наприклад, DKMS за замовчуванням використовує / usr / src /. але Namcap вважає що це нестандартна директорія, це трохи суперечить посиланням.

Ось приклад пакета, який редагує dkms.conf відповідно до назвою пакунка і його версії.

Тепер в pacman є хукі DKMS, тому вам не потрібно вказувати конфігурацію, специфічну для DKMS, в вашому файлі .install. dkms install і dkms remove будуть приводить до автоматичної.

Дивіться також