我编写了一个简单的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
请告诉我如何完成。
先谢谢。
答案 0 :(得分:7)
这是因为modprobe
通过读取 / lib / modules / $(shell uname -r)/ 下名为 modules.dep 的文件来插入模块。因此,在编译和安装模块之后,请确保再次重新创建此依赖项文件。
以下是如何完成的
- 安装模块后,检查是否已将其复制到/ lib / modules /
- 如果找到,则转到 - > / lib / modules / $(shell uname -r)/ 并使用 depmod 命令创建新模块的依赖关系列表。
醇>
完成此操作后,您将能够在 / 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
作品!