Установить dkms для kali linux

Автоматическая сборка модуля ядра ОС с помощью фреймворка 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

Вы можете установить компоненты фреймворка DKMS в различных дистрибутивах Linux таким же образом, как показано ниже. Для корректной работы DKMS необходим сборочный инструментарий (включающий такие инструменты, как gcc , make ) и набор заголовочных файлов, причем оба этих компонента должны автоматически устанавливаться силами менеджера пакетов программного обеспечения дистрибутива.

Debian, Ubuntu и Linux Mint:

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

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

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

В данной статье я буду использовать в качестве примера модуль ядра ОС под названием ixgbe , который по своей сути является драйвером для сетевых карт производства компании Intel.

Во-первых, следует загрузить и распаковать архив исходного кода драйвера устройства в директорию /usr/src/ — .

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

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

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

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

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

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

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

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

Читайте также:  Show system information windows

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

После того, как фреймворк DKMS настроен для автоматической пересборки драйвера ixgbe , я предлагаю рассмотреть изменения в системе, которые произойдут в результате обновления версии ядра ОС. Я буду обновлять ядро ОС версии 3.10.0-229 до версии 3.10.0-327 . В качестве тестового окружения будет использоваться дистрибутив CentOS 7, поэтому для обновления версии ядра ОС я воспользуюсь утилитой yum . Обратите внимание на то, что для корректной пересборки драйвера устройства средствами DKMS вместе с пакетами программного обеспечения с компонентами новой версии ядра ОС должен устанавливаться соответствующий пакет программного обеспечения с его заголовочными файлами.

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

Несложно заметить, что драйвер устройства версии 4.3.15 был установлен средствами DKMS в директорию модулей ядра Linux версии 3.10.0-229 .

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

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

Вы должны обнаружить, что драйвер ixgbe той же версии был автоматически пересобран для ядра Linux новой версии 3.10.0-327 .

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

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

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

Заключение

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

Источник

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

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

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

Contents

Установка

Установите пакет dkms и заголовочные файлы требуемого ядра/ядер. Например, для ядра по умолчанию linux соответствует linux-headers . Другие ядра имеют собственные пакеты с заголовочными файлами.

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

Обновления

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Initial ramdisk

В случаях для любых модулей, которые были установлены через DKMS и используются в Initrd, например zfs-dkms AUR , может быть полезно написать хук pacman для автоматической пересборки образа(ов) initramfs.

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

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

Читайте также:  Windows tablet мы android tablets

Источник

Kali linux настройка wifi адаптера

Привет! Установили себе чистую систему, но даже так Kali Linux не видит Wi-Fi адаптер? Обучение тестированию откладывается в дальний ящик, а зарождающийся талант начинающего безопасника попал на свалку? Ну ничего. Тоже приходилось сталкиваться с подобными проблемами на Кали. Вообще Wi-Fi и Linux старая больная тема, но именно на Kali она проявилась во всей красе от потребностей пользователей. Разберемся в этом!

Нашли ошибку? Есть своя история по этому вопросу? Оставьте свое мнение в комментариях к этой статье! Именно ваше слово может спасти кому-то уйму времени!

Для виртуальной машины

Актуально и для Virtual Box, и для VMWare Workstation.

Начнем с самого частого. Сам ставил себе виртуалку, а там главная проблема – виртуальная машина не видит встроенный модули Wi-Fi, хоть об стену разбейся. Многие годы бытует мнение, что и не увидит. А т.к. уровень виртуальной машины выше, чем установленной внутри нее Kali, то и сама Kali не увидит встроенного адаптера.

Решение простое – берется внешний USB адаптер, который успешно подключается к виртуалке.

Т.е. если вы хотите проводить тестирование своих Wi-Fi сетей через виртуальную машину – обязательно приобретите внешний модуль, в противном случае не тратьте свое время. А вот о совместимости адаптеров и возможных исправлениях – читайте ниже (чтобы не взять себе мертвый внешний адаптер Wi-Fi).

Из дополнения, возможно потребуется активировать сам адаптер в виртуальной среде. На примере Вари:

Для основы – драйверы и совместимость

На основной системе может возникнуть уже две проблемы – не видит USB адаптер и не видит встроенный адаптер. Основная причина здесь, по моему опыту – проблема с драйвером и совместимостью. Именно в этом случае не работает Wi-Fi на Kali Linux. Но обо всем по порядку.

Перед началом нашей операции рекомендую обновиться:

apt-get clean && apt-get update && apt-get upgrade

После этого предлагаю посмотреть список установленных устройств:

lsusb – для usb устройств
lspci – для встроенных модулей

В открывшемся большом списке ищем свою модель Wi-Fi модуля:

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

Далее появляются два пути:

  1. Посмотреть совместимости на ЭТОЙ СТРАНИЦЕ . Если чип вашего адаптера есть здесь, то все будет работать из коробки.
  2. Гуглим (лучшего совета и не придумаешь) по типу «driver linux ВАШАМОДЕЛЬ». Очень часто попадете на грамотные топики по теме или даже официальные драйверы устройства. Дать совет лучше? Ничего лучше не придумаешь. Универсального совета пока нет.

Чтобы данное руководство совсем не было водяным, отмечу, что некоторым просто помогает установка WICD:

apt-get install wicd
service network-manager stop
update-rc.d network-manager disable
update-rc.d wicd enable
service wicd start

И вот еще видеоверсия установки конкретного драйвера, хотя в начале тоже ругалось, что адаптеры Wi-Fi не найдены:

После перезапуска системы мозги приходят к единому согласию. За сим заканчиваю. Свои истории стучания в бубен под бодрые завывания расскажите в комментариях ниже – пригодится и вам, и другим. До скорых встреч на нашем портале!

Кали Линукс не видит wifi модуль ?

Всем привет, это очередной урок по решению вопросов по неисправностям и несовместимости некоторого установленного оборудования в ноутбуки с установленной операционной системой Кали Линукс . На всеобъемлемость не претендую, покажу как решил вопрос с конкретной моделью ноутбука. Кали установлена на жёсткий диск основной системой – не ВИРТУАЛКА! Если вы предпочитаете работу в виртуальной машине, обратитесь за некоторой информацией к статье Как установить виртуальную Кали Линукс?

Параметры машины таковы:

  • Имеется бюджетный ноутбук Lenovo B590
  • На борту Кали Линукс версия 2.0
  • Процессор от Intel с 2-мя ядрами (потом посмотрим списком…)
  • Диск, оперативная память нас не волнуют, ибо…

Симптомы:

Без дополнительного модема wifi не работает, Кали Линукс не видит wifi никакого , и вообще система не понимает, установлен ли внутри модуль беспроводного соединения. Рассмотрю решение проблемы пошагово.

Любые операции начинаем с команды:

Для начала взглянем на список установленного оборудования для приёма и трансляции сигналов. Он не богат:

Теперь взглянем, что установлено на борту Lenovo B590 и работает ли (да работает, конечно; из-под второй, установленной на том же Lenovo B590 windows 7, wifi работает отлично). Введём команду просмотра всего оборудования, кто не помнит – запоминайте – пригодится:

Читайте также:  What top command in linux

lspci

А вот и установленный на Lenovo B590 этой версии модуль, из-за которого Кали Линукс не видит wifi:

02:00.0 Network controller: Broadcom Corporation BCM43142 802.11b/g/n

Что ж, ситуация знакома: модуль на месте, драйвера – нет. Обратившись к страничке поддержки драйверов (а тогда она выглядела именно так) этого семейства для Линукс, и присмотревшись к разноцветной табличке списка поддерживаемых устройств, обнаружил, что устройство в списке не без проблем:

Ну не сидеть же нам без wifi, и не покупать дешёвенький модуль на USB (не вздумайте купить без оглядки другой модуль для своего ноута – 99% вероятности, что конфигурация ноутбука этого вам просто не позволит сделать). А альфа-карты нам нужны для другого. Поехали в Debian за справкой и посмотрим, что есть для нас новенького. Оказывается, есть и давно. Тогда установим последние версии пакетов linux-image, linux-headers и broadcom-sta-dkms. Откроем терминал и пропишем знакомой уже командой (некоторые флаги могли устареть). Но предварительно добавим к Кали ещё один репозиторий:

Сюда пропишем новый адрес с новой строки:

deb http://httpredir.debian.org/debian/ stretch main contrib non-free

А теперь установка:

На комментарии терминала на рисунке не смотрите, у меня всё уже стоит. Следите за синтаксисом команды (она не вся влезла в фото – поздно заметил). Поддержка динамического ядра модуля DKMS установит в Кали новое устройство с названием wl. Теперь выгрузим конфликтующие модули (если таковые имеются):

И, наконец, загружаем новообразованный модуль:

Если ошибок терминал не вернул, перезагружать не нужно. Проверим, что показывает NetworkManager Кали:

Менеджер заметил модуль wifi в нашем Lenovo B590. Проверим, есть ли он в списке устройств через терминал:

iwconfig

Привет… Новообразованный wlan6 режим мониторинга поддерживать не будет, однако для комфортной “официальной” работы его предостаточно. Если на каком-то из этапов терминал заругался, не примените перезагрузить Кали с командой на полное обновление:

GreenZo

»
Но при сборке выбивает ошибку

/mt7601u# make
make -C /lib/modules/`uname -r`/build M=$PWD
make[1]: вход в каталог «/usr/src/linux-headers-4.17.0-kali3-amd64»
CC [M] /root/mt7601u/mac.o
/root/mt7601u/mac.c: In function ‘mt76_mac_process_rate’:
/root/mt7601u/mac.c:408:20: error: ‘RX_FLAG_SHORTPRE’ undeclared (first use in this function); did you mean ‘RX_ENC_FLAG_SHORTPRE’?
status->flag |= RX_FLAG_SHORTPRE;
^

RX_ENC_FLAG_SHORTPRE
/root/mt7601u/mac.c:408:20: note: each undeclared identifier is reported only once for each function it appears in
/root/mt7601u/mac.c:417:19: error: ‘RX_FLAG_HT_GF’ undeclared (first use in this function); did you mean ‘RX_ENC_FLAG_HT_GF’?
status->flag |= RX_FLAG_HT_GF;
^

RX_ENC_FLAG_HT_GF
/root/mt7601u/mac.c:420:19: error: ‘RX_FLAG_HT’ undeclared (first use in this function); did you mean ‘RX_FLAG_HT_GF’?
status->flag |= RX_FLAG_HT;
^

RX_FLAG_HT_GF
/root/mt7601u/mac.c:429:19: error: ‘RX_FLAG_SHORT_GI’ undeclared (first use in this function); did you mean ‘RX_FLAG_SHORTPRE’?
status->flag |= RX_FLAG_SHORT_GI;
^

RX_FLAG_SHORTPRE
/root/mt7601u/mac.c:432:24: error: ‘RX_FLAG_STBC_SHIFT’ undeclared (first use in this function); did you mean ‘RX_ENC_FLAG_STBC_SHIFT’?
status->flag |= 1 flag |= RX_FLAG_40MHZ;
^

RX_FLAG_HT
make[4]: *** [/usr/src/linux-headers-4.17.0-kali3-common/scripts/Makefile.build:318: /root/mt7601u/mac.o] Ошибка 1
make[3]: *** [/usr/src/linux-headers-4.17.0-kali3-common/Makefile:1585: _module_/root/mt7601u] Ошибка 2
make[2]: *** [Makefile:146: sub-make] Ошибка 2
make[1]: *** [Makefile:8: all] Ошибка 2
make[1]: выход из каталога «/usr/src/linux-headers-4.17.0-kali3-amd64»
make: *** [Makefile:8: default] Ошибка 2

Я ещё очень слабо понимаю в теме Linux, но мне очень интересно и я хочу развиваться. Прошу помощи.

»
Но при сборке выбивает ошибку

/mt7601u# make
make -C /lib/modules/`uname -r`/build M=$PWD
make[1]: вход в каталог «/usr/src/linux-headers-4.17.0-kali3-amd64»
CC [M] /root/mt7601u/mac.o
/root/mt7601u/mac.c: In function ‘mt76_mac_process_rate’:
/root/mt7601u/mac.c:408:20: error: ‘RX_FLAG_SHORTPRE’ undeclared (first use in this function); did you mean ‘RX_ENC_FLAG_SHORTPRE’?
status->flag |= RX_FLAG_SHORTPRE;
^

RX_ENC_FLAG_SHORTPRE
/root/mt7601u/mac.c:408:20: note: each undeclared identifier is reported only once for each function it appears in
/root/mt7601u/mac.c:417:19: error: ‘RX_FLAG_HT_GF’ undeclared (first use in this function); did you mean ‘RX_ENC_FLAG_HT_GF’?
status->flag |= RX_FLAG_HT_GF;
^

RX_ENC_FLAG_HT_GF
/root/mt7601u/mac.c:420:19: error: ‘RX_FLAG_HT’ undeclared (first use in this function); did you mean ‘RX_FLAG_HT_GF’?
status->flag |= RX_FLAG_HT;
^

RX_FLAG_HT_GF
/root/mt7601u/mac.c:429:19: error: ‘RX_FLAG_SHORT_GI’ undeclared (first use in this function); did you mean ‘RX_FLAG_SHORTPRE’?
status->flag |= RX_FLAG_SHORT_GI;
^

RX_FLAG_SHORTPRE
/root/mt7601u/mac.c:432:24: error: ‘RX_FLAG_STBC_SHIFT’ undeclared (first use in this function); did you mean ‘RX_ENC_FLAG_STBC_SHIFT’?
status->flag |= 1 flag |= RX_FLAG_40MHZ;
^

RX_FLAG_HT
make[4]: *** [/usr/src/linux-headers-4.17.0-kali3-common/scripts/Makefile.build:318: /root/mt7601u/mac.o] Ошибка 1
make[3]: *** [/usr/src/linux-headers-4.17.0-kali3-common/Makefile:1585: _module_/root/mt7601u] Ошибка 2
make[2]: *** [Makefile:146: sub-make] Ошибка 2
make[1]: *** [Makefile:8: all] Ошибка 2
make[1]: выход из каталога «/usr/src/linux-headers-4.17.0-kali3-amd64»
make: *** [Makefile:8: default] Ошибка 2

Я ещё очень слабо понимаю в теме Linux, но мне очень интересно и я хочу развиваться. Прошу помощи.

и выложите вывод сюда под спойлер.

UPD. Все таки нашел ваше ядро в логе. Думаю Вам стоит читать описание того, что ставите (мало ли). Там написано, что если ядро выше версии 4.2, то ничего ставить не надо, все уже из коробки.
Вот

на пропиетарный (от производителя).

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

Источник

Оцените статью