找不到模块:modprobe

时间:2014-11-24 05:33:51

标签: c linux linux-kernel linux-device-driver kernel-module

我编写了一个简单的hello world内核模块,编译并安装在/lib/modules/kernel_version/extra/路径中。

insmod正确加载,modprobe我收到错误

modprobe: FATAL: Module hello_world.ko not found.

我已经安装了所有必需品。

这是Makefile的编译和安装:

make -C /lib/modules/$(shell uname -r)/build M=$(PWD)  modules
make -C /lib/modules/$(shell uname -r)/build  M=$(PWD)  modules_install

请告诉我如何完成。

先谢谢。

2 个答案:

答案 0 :(得分:7)

这是因为modprobe通过读取 / lib / modules / $(shell uname -r)/ 下名为 modules.dep 的文件来插入模块。因此,在编译和安装模块之后,请确保再次重新创建此依赖项文件。

以下是如何完成的

  
      
  1. 安装模块后,检查是否已将其复制到/ lib / modules /
  2.   
  3. 如果找到,则转到 - > / lib / modules / $(shell uname -r)/ 并使用 depmod 命令创建新模块的依赖关系列表。
  4.   


  

完成此操作后,您将能够在 / lib / modules / $(shell uname -r)/modules.dep 文件下找到您的模块名称。

在此之后,您可以使用modprobe插入模块。

编辑:

以下是我过去使用root权限和测试构建的Makefile

target ?= hello_world
obj-m = $(target).o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules_install

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

答案 1 :(得分:0)

我曾经遇到过同样的问题。我的问题是,在发出命令时我没有删除扩展名。即。

tr()

给出了上述错误。但是这个:

modprobe foo.ko

作品!