场景
我正在尝试 Linux 内核编程,我在其中创建了模块、插入、删除并检查了它的dmesg
输出
问题
当我插入模块后,我可以通过触发来验证它是否已成功插入lsmod
。然而,当我触发时,modinfo
它会返回一个错误,指出它不存在。按照以下终端片段进行操作
输入
sudo insmod hello.ko
lsmod | head -2
输出
Module Size Used by
hello 16384 0
输入
sudo modinfo hello
输出
modinfo: ERROR: Module hello not found.
问题
- 难道我做错了什么?
- 如果没有,我可以通过什么其他方式获得它?
- 我尝试从文件系统中的 nautilus 浏览器中找到它,但它没有返回任何结果。我在哪里可以找到它的插入文件?
- 它是否是临时加载的,这可能就是我找不到它的原因吗?
答案1
modinfo
默认情况下搜索/lib/modules/<kernel-version>
.因此,您必须将内核模块复制到其中的子目录中。最有可能的/lib/modules/<kernel-version>/extra
。
将模块复制到正确的位置后,您还应该执行depmod -a
.