使用modprobe“FATAL:模块未find错误”

我有一个modprobe命令的问题…我编译hello世界模块,并用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 

原因是modprobe查看/lib/modules/$(uname -r) ,因此不能用本地文件路径。 这是modprobeinsmod之间的区别之一。

最好的事情是实际使用内核makefile来安装模块:

这里是添加到你的Makefile的片段

围绕顶部添加:

 PWD=$(shell pwd) VER=$(shell uname -r) KERNEL_BUILD=/lib/modules/$(VER)/build # Later if you want to package the module binary you can provide an INSTALL_ROOT # INSTALL_ROOT=/tmp/install-root 

在最后加上:

 install: $(MAKE) -C $(KERNEL_BUILD) M=$(PWD) \ INSTALL_MOD_PATH=$(INSTALL_ROOT) modules_install 

然后你可以发行

  sudo make install 

这会把它放在/ lib / modules / $(uname -r)/ extra /

或/ lib / modules / $(uname -r)/ misc /

并适当运行depmod

尝试insmod而不是modprobe。 Modprobe在模块目录/ lib / modules / uname -r查找所有模块和其他文件

 Insert this in your Makefile $(MAKE) -C $(KDIR) M=$(PWD) modules_install it will install the module in the directory /lib/modules/<var>/extra/ After make , insert module with modprobe module_name (without .ko extension) 

要么

 After your normal make, you copy module module_name.ko into directory /lib/modules/<var>/extra/ 

然后做modprobe module_name(不带.ko扩展名)

确保在加载模块之前,您的网络已经关闭:

 sudo stop networking 

它帮助我 – https://help.ubuntu.com/community/UbuntuBonding