linux使用内核模块和驱动

本文详细介绍了如何使用insmod和rmmod命令加载和卸载Linux内核模块,以及使用modprobe命令自动处理模块依赖。包括模块加载的注意事项,如版本匹配和参数传递,以及查看已加载模块的方法。

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

一、加载模块

通过 insmod 命令可以往正在运行中的内核插入某些模块而无需重启系统。用法:

# insmod [选项] 模块 [符号名称=值]

一般情况下,如果一个模块的版本与所运行的内核不一致,模块将无法插入系统。就算
是同一版本内核编译得到,如果内核配置文件不同,也有可能无法插入。使用-f 选项强制插
入后,可能会出现运行不正确的情况。
插入和卸载模块需要 root 权限。插入模块比较简单,如需要往系统插入 beep.ko 驱动模
块,可用:

[root@zlg beep]# insmod beepdrv.ko

有些驱动/模块可以接受外部参数,在插入模块的时候为相应的符号赋值。一个模块/驱
动能否接受外部参数,能够接受几个外部参数,取决于模块/驱动的具体实现,符号以及赋
值请参考相应模块/驱动的说明。这是一个范例,pcm-8032a.ko 模块能接收 irq 和 addr 两个
符号参数,插入模块的时候指定:

# insmod pcm-8032a.ko irq=3 addr=0x300

二、查看系统已经加载的模块

使用lsmod命令进行查看
lsmod 命令结果实际上就是列出/proc/modules 的内容

三、卸载驱动模块

使用rmmod命令

# rmmod [选项] 模块

在这里插入图片描述
假定系统的 beep.ko 不再需要,卸载命令:

[root@zlg beep]# rmmod beepdrv.ko

四、自动处理可加载模块

modprobe 命令集加载/卸载功能于一身,并且可以自动解决模块的依赖关系,将某模块所依赖的其它模块全部加载。
用法:

# modprobe [选项] 模块 [符号=值]

modprobe 处理模块时忽略模块的路径,这要求系统模块和驱动是按照 make
modues_install 方式安装的,即模块必须放在/lib/modules/$(uname -r)目录下,并且有正确的
/lib/modules/$(uname -r)/modules.dep 文件,modprobe 根据该文件来寻找和解决依赖关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄宝康

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

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

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

打赏作者

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

抵扣说明:

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

余额充值