Как мне написать make-файл для модуля ядра в OpenWrt для автоматической загрузки модуля - PullRequest
0 голосов
/ 25 мая 2018

Я пишу простой модуль ядра для Openwrt.У меня есть рабочий код, который загружает и делает то, что ему нужно.Чего мне не хватает, так это как получить код в процессе сборки Openwrt.У меня есть Makefile, как показано ниже:

# Copyright (C) 2006-2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

# name
PKG_NAME:=HelloWorld
# version of what we are downloading
PKG_VERSION:=1.0
# version of this makefile
PKG_RELEASE:=0

PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)
PKG_CHECK_FORMAT_SECURITY:=0

include $(INCLUDE_DIR)/package.mk

define KernelPackage/$(PKG_NAME)
    SUBMENU:=Other modules
    TITLE:=helloworld lkm
    FILES:= $(PKG_BUILD_DIR)/hello.ko
endef

define KernelPackage/$(PKG_NAME)/description
    A sample kernel module.
endef

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

MAKE_OPTS:= \
    ARCH="$(LINUX_KARCH)" \
    CROSS_COMPILE="$(TARGET_CROSS)" \
    SUBDIRS="$(PKG_BUILD_DIR)"

define Build/Compile
    $(MAKE) -C "$(LINUX_DIR)" \
        $(MAKE_OPTS) \
        modules
endef

$(eval $(call KernelPackage,$(PKG_NAME)))

Я пытаюсь следовать инструкциям здесь: https://wiki.openwrt.org/doc/devel/packages#creating_packages_for_kernel_modules

Прямо сейчас я вижу модуль в make menuconfig и выбираю его,Однако когда я запускаю сборку в QEMU, я не вижу модуль.Я могу скопировать модуль * .ko и загрузить его, и это работает.Я просто хочу, чтобы модуль загружался автоматически.Как я могу это сделать?

1 Ответ

0 голосов
/ 30 мая 2018

В Build/Compile вам нужна строка для включения вашего модуля.

define Build/Compile $(MAKE) -C "$(LINUX_DIR)" \ $(MAKE_OPTS) \ CONFIG_<your mod>=m \ # THIS LINE IS MISSING modules endef

Это несколько хороших примеров в дереве.Проверьте exfat-nofuse .

...