Usr*_*sr1 2 c linux kernel-module linux-device-driver linux-kernel
我编写了一个简单的hello world内核模块,编译并安装在/lib/modules/kernel_version/extra/路径中.
随着insmod它正确加载,但modprobe我得到一个错误
modprobe: FATAL: Module hello_world.ko not found.
Run Code Online (Sandbox Code Playgroud)
我已经安装了所有必需品.
这是Makefile的编译和安装:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules_install
Run Code Online (Sandbox Code Playgroud)
请告诉我如何完成.
提前致谢.
这是因为modprobe通过在/ lib/modules/$(shell uname -r)/下读取名为modules.dep的文件来插入模块.因此,在编译和安装模块之后,请确保再次重新创建此依赖项文件.
这是如何完成的
- 安装模块后,检查是否将其复制到/ lib/modules /
- 如果找到,则转到 - > / lib/modules/$(shell uname -r)/并使用depmod命令创建新模块的依赖关系列表.
完成后,您将能够在文件/ lib/modules/$(shell uname -r)/modules.dep下找到您的模块名称.
在此之后,您可以使用modprobe插入模块.
编辑:
下面是Makefile我以前用root权限和测试构建的.
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
Run Code Online (Sandbox Code Playgroud)