【Linux设备驱动】如何挂载和卸载驱动 lsmod insmod rmmod和modprobe

如何挂载和卸载驱动

哎,这就简单了呀,伙计们。就和安装软件,卸载软件一个样。

不过按照书上内容的思路呢,是告诉大家如何让原代码如何变成内核里运行的子系统。后续会在这篇文章补全

insmod

挂载即安装,

insmod char_demo.ko
rmmod

卸载,

rmmod char_demo
lsmod

lsmod就可以查看驱动有没有成功挂载,卸载的啦

这一节,有时间好好絮叨絮叨,客观别急,只要知道这三个指令就成

详细内容可查看《Linux设备驱动程序》2.4.2 加载和卸载模块 p18

与此同时程序员也可以通过调用request_module(module_name);灵活的方式加载其他内核模块

modprobe : 解决insmod无法解决的模块依赖

比如drv.ko 依赖first.ko 这个模块,就必须先使用insmod 命令加载first.ko 这个模块,然后再加载drv.ko 这个模块。

但是**modprobe就不会存在这个问题,modprobe 会分析模块的依赖关系,然后会将所有的依赖模块都加载到内核中,因此modprobe 命令相比insmod 智能**一些。

modprobe 命令主要智能在提供了模块的依赖性分析、错误检查、错误报告等功能,推荐使用modprobe 命令来加载驱动。

modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块

modprobe 命令默认会去/lib/modules/< kernel-version>目录中查找模块,比如本书使用的Linux kernel 的版本号为5.10.15,因此modprobe 命令默认会到/lib/modules/5.10.15 这个目录中查找相应的驱动模块,一般自己制作的根文件系统中是不会有这个目录的,所以需要自己手动创建,然后将.ko文件放到这个文件目录即可。

语法
modprobe [选项] <参数>
选项

-a或–all:载入全部的模块;

-c或–show-conf:显示所有模块的设置信息;

-d或–debug:使用排错模式;

-l或–list:显示可用的模块;

-r或–remove:模块闲置不用时,即自动卸载模块;

-t或–type:指定模块类型;

-v或–verbose:执行时显示详细的信息;

-V或–version:显示版本信息;

-help:显示帮助。

参数

模块名:要加载或移除的模块名称。

modprobe加载驱动
modprobe drv.ko
modprobe卸载驱动
modprobe -r drv.ko
modprobe查看已挂载驱动
modprobe -l

这里,使用格式modprobe 模块名来挂载一个模块。挂载之后,用lsmod可以查看已经挂载的模块。模块名是不能带有后缀的,我们通过modprobe -l所看到的模块,都是带有.ko.o后缀。

常见问题:

1.rmmod: chdir(xxxx):No such file or directory

解决:在/lib/module路径下执行指令创建文件夹:

mkdir `uname -r`

mkdir 5.10.15
#5.10.15是内核版本号,可以通过uname -r指令查看
  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Van.Ghylivan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值