embedded-linux - Linux 不会自动加载内核模块
问题描述
我创建了一个基本内核模块,我计划最终将其用于时序分析。我正在运行 v4.14.149 主线内核,并使用在 i.MX6 目标上运行的 Yocto Zeus 构建它。我似乎无法让它自动启动。
一切都编译得很好,我看到我的testmodule.ko出现在目标的/lib/modules/4.14.149/extras/中。我可以很好地加载和卸载它insmod
,rmmod
所以我很确定模块没问题。我还在 /etc/modules-load.d/ 中看到一个包含模块名称(testmodule)的testmodule.conf文件,但是当我启动并执行时,我看不到它已加载。我也没有看到任何表明它已加载的输出。lsmod
journalctl
我已经查看并尝试了Yocto:向映像添加内核模块配方,但它不会在启动时加载,并且Yocto 加载内核模块并已添加KERNEL_MODULE_AUTOLOAD += "testmodule"
到我的机器配置中,我也在模块配方中尝试过,但无济于事。我通过IMAGE_INSTALL_append
as kernel-module-test将模块包含在我的图像配方中。
这是我的模块的配方:
SUMMARY = "Test kernel module"
LICENSE = "CLOSED"
inherit module
SRC_URI = "file://Makefile \
file://testmodule.c"
S = "${WORKDIR}"
KERNEL_MODULE_AUTOLOAD += "testmodule"
RPROVIDES_${PN} += "kernel-module-test"
目前的模块代码只是打印一条消息(它是我拥有的 Yocto 书中的一个示例),就是这样:
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
/*
** Module Init function
*/
static int hello_world_init(void)
{
printk("Markem Kernel Module Inserted Successfully...\n");
return 0;
}
/*
** Module Exit function
*/
static void hello_world_exit(void)
{
printk("Markem Kernel Module Removed Successfully...\n");
}
module_init(hello_world_init);
module_exit(hello_world_exit);
MODULE_LICENSE("Proprietary");
/*
MODULE_VERSION("0.1");
MODULE_DESCRIPTION("A test module.");
MODULE_AUTHOR("Markem-Imaje Corporation");
*/
最后是Makefile,它也基于 Yocto Book 示例
obj-m := testmodule.o
SRC := $(shell pwd)
all:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC)
modules_install:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
clean:
rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
rm -f Module.markers Module.symvers modules.order
rm -rf .tmp_versions Modules.symvers
如果您需要我的内核或我的机器 conf 或任何东西的配方,我可以得到这些。我读过的所有内容都表明将文件放在/etc/modules-load.d/ 中表明它应该自动加载。我可能缺少内核配置吗?
解决方案
推荐阅读
- react-native - 使用对象反应原生 setState
- javascript - 如何获取数组数组的索引?
- javascript - I calculated to get the first day of the month but go the last
- flutter - Flutter - 重启倒计时定时器
- amazon-web-services - Lightsail 负载均衡器上的通配符 SSL
- html - 空白页 HTML
- python - 使用 iframe 抓取网站
- windows - WS_CLIPSIBLINGS 样式自动添加
- java - JSONArray 需要更高的 API 级别,但在同一类中使用没有问题
- charts - 如何在 highcharts 的堆积条形图内部显示文本