Для компиляции модуля ядра вам нужны настоящие исходные коды ядра, а не только заголовочные файлы ядра.Вы должны собрать из исходного каталога ядра с M=
, указывающим на источник ваших модулей.И вместе с исходным модулем вам, конечно, также нужен рабочий Makefile.Эти шаги объяснены в любом из десятков руководств по написанию модулей ядра, например, этот .
Для кросс-компиляции вам также нужно передатьсоответствующие аргументы, чтобы ядро знало, для какой архитектуры строить и какой кросс-компилятор использовать.По крайней мере, это означает, что вы должны указать опции ARCH=
и CROSS_COMPILE=
при сборке.Иногда вам нужны дополнительные опции (например, чтобы указать на соответствующий инструмент depmod).
Чтобы упростить это, Buildroot предлагает инфраструктура модуля ядра .В простейшем случае вы можете просто создать файл Config.in
, содержащий
config BR2_PACKAGE_HELLOMOD
bool "hellomod"
depends on BR2_LINUX_KERNEL
и файл hellomod.mk
, содержащий
HELLOMOD_SITE = /path/to/hellomod/source
$(eval $(kernel-module))
$(eval $(generic-package))
Вы также должны получить Config.in
изpackage/Config.in
в дереве Buildroot.Или, что еще лучше, используйте внешнее дерево , чтобы вам не приходилось изменять сам Buildroot.