“致命:找不到模块错误”使用modprobe
我的 modprobe
命令有问题...我编译了 hello world 模块并使用 insmod
加载它,它工作正常,当我执行 lsmod
时,它工作正常>,我可以在输出列表中看到它。但是当我使用 modprobe
插入此模块时,我收到一个致命错误:
root@okapi:/home/ravi# modprobe ./hello.ko
FATAL: Module ./hello.ko not found.
root@okapi:/home/ravi#
这是模块代码:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
和 Makefile
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
I have a problem with modprobe
command... I compiled the hello world module and loaded it with insmod
, it works fine and when I do lsmod
, I can see it in the output list. But when I insert this module using modprobe
I am getting a FATAL error:
root@okapi:/home/ravi# modprobe ./hello.ko
FATAL: Module ./hello.ko not found.
root@okapi:/home/ravi#
Here is the module code:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
and Makefile
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
原因是
modprobe
会查找/lib/modules/$(uname -r)
中的模块,因此无法使用本地文件路径。这是 modprobe 和 insmod 之间的区别之一。The reason is that
modprobe
looks into/lib/modules/$(uname -r)
for the modules and therefore won't work with local file path. That's one of differences betweenmodprobe
andinsmod
.最好的办法是实际使用内核 makefile 来安装模块:
以下是要添加到 Makefile 的代码片段
围绕顶部添加:
围绕末尾添加:
,然后您可以发出
此命令,将其放入 /lib/modules/$(uname -r)/extra/
或 /lib/modules/$(uname -r)/misc/
中,并适当地运行 depmod
The best thing is to actually use the kernel makefile to install the module:
Here is are snippets to add to your Makefile
around the top add:
around the end add:
and then you can issue
this will put it either in /lib/modules/$(uname -r)/extra/
or /lib/modules/$(uname -r)/misc/
and run depmod appropriately
我认为 /lib/modules/
uname -r
/modules.dep 和 /lib/modules/uname -r
/modules 中应该有 your_module.ko 的条目.dep.bin 使“modprobe your_module”命令正常工作i think there should be entry of your your_module.ko in /lib/modules/
uname -r
/modules.dep and in /lib/modules/uname -r
/modules.dep.bin for "modprobe your_module" command to work尝试使用
insmod
而不是 modprobe。模组探针在模块目录 /lib/modules/
uname -r
中查找所有模块和其他模块文件
Try
insmod
instead of modprobe. Modprobelooks in the module directory /lib/modules/
uname -r
for all the modules and otherfiles
确保在加载模块之前关闭您的网络:
它帮助了我 - https://help.ubuntu.com /community/UbuntuBonding
Ensure that your network is brought down before loading module:
It helped me - https://help.ubuntu.com/community/UbuntuBonding
或者
然后执行 modprobe module_name (不带 .ko 扩展名)
OR
then do modprobe module_name (without .ko extension)