DKMS (Dynamic Kernel Module Support) — шикарное решение, если требуемый модуль для ядра нельзя поставить и обновлять штатными средствами, но зато есть его исходники. Не требуется следить за обновлениями ядра и оперативно пересобирать нужный модуль или вовсе блокировать обновления ядра, чтобы ничего не отвалилось после очередного обновления.
Сначала устанавливаем dkms и другие необходимые пакеты:
$ sudo apt-get install dkms build-essential autoconf automake autogen libpcap-dev libtool xtables-addons-dkms pkg-config xtables-addons-sourceСкачиваем исходники nDPI:
$ wget https://github.com/vel21ripn/nDPI/archive/netfilter.zipРаспаковываем скачанный архив в
/usr/src
:$ sudo unzip netfilter.zip -d /usr/srcПереименовываем распакованную папку в
ndpi-x.y.z
, где x.y.z
— версия модуля:$ sudo mv /usr/src/nDPI-netfilter /usr/src/ndpi-1.7.0Создаем файл
dkms.conf
в этой папке:$ sudo tee /usr/src/ndpi-1.7.0/dkms.conf << EOF # Версия модуля PACKAGE_VERSION="1.7.0" # Название модуля в /usr/src PACKAGE_NAME="ndpi" # Папка для компиляции BDIR="\${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build" # Аргументы для make ARGS="-C \${kernel_source_dir} SUBDIRS=\${BDIR} M=\${BDIR}/ndpi-netfilter/src" # После компиляции созданный модуль перемещается туда, где DKMS может его найти MAKE[0]="make \${ARGS} modules ; find \${BDIR} -name '*.ko' -exec mv -v {} \${BDIR} \;" CLEAN="make \${ARGS} clean" # Название модуля ядра BUILT_MODULE_NAME[0]="xt_ndpi" # Папка, где обычно устанавливается модуль в ядре DEST_MODULE_LOCATION[0]="/extra/" # Не пересобирать initrd ядра REMAKE_INITRD="no" # Установка модуля после компиляции AUTOINSTALL="yes" EOFТеперь компилируем и устанавливаем библиотеку nDPI
$ cd /usr/src/ndpi-1.7.0 $ sudo ./autogen.sh $ sudo sh -c './configure && make' $ cd /usr/src/ndpi-1.7.0/ndpi-netfilter $ sudo make installПосле чего в DKMS добавляем запись о нашем модуле:
$ sudo dkms add -m ndpi -v 1.7.0Собираем модуль из исходников:
$ sudo dkms build -m ndpi -v 1.7.0Собранный модуль устанавливаем папке
/dkms/
:$ sudo dkms install -m ndpi -v 1.7.0