使用modprobe加载驱动

本文详细介绍了如何使用modprobe加载Linux内核模块,并通过depmod生成必要的依赖文件。从创建必要的目录结构到拷贝模块文件,再到执行depmod生成modules.dep文件,最后成功加载模块的过程,帮助读者理解Linux内核模块的加载机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

modprobe则可以一次性将有依赖关系的驱动全部加载到内核,不需要驱动的具体地址。但需要将驱动拷贝到/lib/modules/$(uname -r)/目录下。modprobe并不需要指定到具体的KO文件目录,我们不仿测试下:

[root@x4412 /]# modprobe x4412-beep.ko
modprobe: can't change directory to '/lib/modules': No such file or directory
[root@x4412 /]#

这里提示找不到/lib/modules目录,和前面介绍的一样,它需要在指定目录下加载KO,那我们不仿新建该目录,再执行上面的指令测试:

[root@x4412 /]# mkdir /lib/modules
[root@x4412 /]# modprobe x4412-beep.ko
modprobe: can't change directory to '3.0.15-9tripod': No such file or directory
[root@x4412 /]#

这里提示找不到3.0.15-9tripod目录,它对应linux内核的名称,可以使用uname–r指令查询。我们继续新建目录,继续测试:

[root@x4412 /]# uname -r
3.0.15-9tripod
[root@x4412 /]# mkdir /lib/modules/3.0.15-9tripod
[root@x4412 /]# modprobe x4412-beep.ko
modprobe: can't open 'modules.dep': No such file or directory
[root@x4412 /]#

这时,提示找不到modules.dep文件。我们不需要手动创建该文件,使用depmod指令即可自动生成。在没有执行该指令时,在/lib/modules/ 3.0.15-9tripod下是没有任何文件的,执行depmod命令后,该目录下将会生成三个文件:

[root@x4412 /]# ls /lib/modules/3.0.15-9tripod/
[root@x4412 /]# depmod
[root@x4412 /]# ls /lib/modules/3.0.15-9tripod/
modules.alias    modules.dep      modules.symbols
[root@x4412 /]#

我们再尝试执行modprobe指令加载驱动:

[root@x4412 /]# modprobe x4412-beep.ko
modprobe: module x4412-beep.ko not found in modules.dep
[root@x4412 /]#

这里提示在modules.dep文件中没有发现我们加载的ko文件,我们尝试查看一下modules.dep的内容:

[root@x4412 /]# cd /lib/modules/3.0.15-9tripod/
[root@x4412 3.0.15-9tripod]# more modules.dep
[root@x4412 3.0.15-9tripod]#

可见,里面的内容为空。实际上,depmod指令会自动分析/lib/modules/$(uname -r)目录下的可加载模块,并按照固定的格式填入modules.dep中。因此,我们可以先将需要加载的ko文件拷贝到对应的目录,再执行depmod指令。

[root@x4412 3.0.15-9tripod]# pwd                  
/lib/modules/3.0.15-9tripod
[root@x4412 3.0.15-9tripod]# cp /mnt/x4412-beep.ko .
[root@x4412 3.0.15-9tripod]# depmod
[root@x4412 3.0.15-9tripod]# more modules.dep
x4412-beep.ko:
[root@x4412 3.0.15-9tripod]#

可以看到,在modules.dep中已经存在有我们需要加载的ko文件名了。注意,不要手工的去编辑modules.dep文件!再执行modprobe指令,即可加载模块了。

[root@x4412 3.0.15-9tripod]# modprobe x4412-beep.ko
[ 2029.489772] x4412 beep driver
[root@x4412 3.0.15-9tripod]#


原文链接:https://blog.csdn.net/armeasy/article/details/39621265

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值