Использование DKMS для автоматического исправления и установки ядра при обновлении

Использование DKMS для автоматического исправления и установки ядра при обновлении

У меня есть система, которой нужно пропатчить файл в ядре для правильной работы. Система работает под управлением Ubuntu 14.04.

Патч исправляет файл в формате drivers/hwmon.

Поэтому после каждого обновления ядра мне нужно скачать исходные коды ядра, применить патч, пересобрать ядро ​​и установить его.

По сути, мой вопрос очень похож наАвтоматически применять исправление модуля и компилировать ядро ​​при обновлении?, где предлагается использовать DKMS. Ссылка на общую документацию DKMS предоставлена, но она не охватывает ситуацию исправления модуля.

Не могли бы вы показать мне, как настроить DKMS для автоматического выполнения исправления? Спасибо!

решение1

Патч модуля на самом деле не меняет способ. По сути, вам нужно поместить все файлы, необходимые для компиляции сборки вашего конкретного модуля ядра вне дерева, в папку, /usr/src/<modulename>-</moduleversion>/и вам нужно добавить файл конфигурации dkms.confв эту папку.

По сути это должно выглядеть так:

MAKE="make -C $kernel_source_dir M=\$(pwd)"
PACKAGE_NAME=hwmon
PACKAGE_VERSION=1.2.3.4
BUILT_MODULE_NAME[0]="hwmon"
DEST_MODULE_LOCATION[0]="/kernel/extra"
AUTOINSTALL=yes

Для патчей вам следует взглянуть настраница руководства для dkmsссылка на отрывок ниже:

   PATCH[#]=
          Use  the  PATCH directive array to specify patches which should be applied to
          your source before a build occurs.  All patches are expected  to  be  in  -p1
          format  and  are  applied  with the patch -p1 command.  Each directive should
          specify the filename of the patch to apply, and all patches must  be  located
          in  the  patches  subdirectory  of  your  source  directory  ( /usr/src/<mod‐
          ule>-<module-version>/patches/ ).  If any patch fails  to  apply,  the  build
          will  be  halted  and  the rejections can be inspected in /var/lib/dkms/<mod‐
          ule>/<module-version>/build/.  If a PATCH should only be  applied  condition‐
          ally,  the  PATCH_MATCH[#]  array should be used, and a corresponding regular
          expression should be placed in PATCH_MATCH[#] which will alert dkms  to  only
          use that PATCH[#] if the regular expression matches the kernel which the mod‐
          ule is currently being built for.

   PATCH_MATCH[#]=
          See the above description for PATCH[#] directives. If you only want  a  patch
          applied  in  certain  scenarios,  the PATCH_MATCH array should be utilized by
          giving a regular expression which matches the kernels you intend  the  corre‐
          sponding PATCH[#] to be applied to before building that module.

Затем вы хотите зарегистрировать его в dkms, собрать и установить модуль.

dkms add     -m hwmon -v 1.2.3.4
dkms build   -m hwmon -v 1.2.3.4
dkms install -m hwmon -v 1.2.3.4

Я использовал заполнители для имени модуля и версии, но вы должны понять идею. Все это описано встраница руководства для dkms.

Связанный контент