Linux驱动模块加载工具比较:insmod vs modprobe

标准答案

比较项insmodmodprobe
基本功能直接将指定的.ko文件插入内核智能加载模块,自动处理依赖关系
依赖处理不处理依赖,需要手动按顺序加载依赖模块自动解析并加载所有依赖模块
模块路径需要指定完整路径或当前目录下的模块在标准模块目录(/lib/modules/`uname -r`/)中查找模块
配置文件不读取任何配置文件读取/etc/modprobe.d/下的配置文件和modules.dep
参数传递通过命令行直接传递参数可以从配置文件或命令行传递参数
错误处理简单的错误返回更详细的错误信息和日志
使用场景开发调试时使用,需要精确控制加载过程生产环境使用,自动化程度高
卸载模块对应rmmod对应modprobe -r

关键点:modprobe依赖于depmod生成的modules.dep文件来解析模块依赖关系。在开发新模块时,通常先用insmod测试基本功能,确认无误后再安装到标准位置,用modprobe测试依赖关系。

深入解析

依赖关系处理

modprobe通过读取/lib/modules/`uname -r`/modules.dep文件来获取模块依赖信息。这个文件由depmod命令生成,记录了模块之间的依赖关系。

配置文件系统

modprobe会读取以下位置的配置文件:

  • /etc/modprobe.d/*.conf
  • /run/modprobe.d/*.conf
  • /lib/modprobe.d/*.conf

这些配置文件可以用于:

  • 设置模块参数
  • 定义模块别名
  • 指定黑名单模块
  • 覆盖模块选项

实际使用示例

# 使用insmod加载模块(需要处理依赖)
insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000/e1000.ko

# 使用modprobe加载模块(自动处理依赖)
modprobe e1000

# 查看模块依赖
modinfo e1000 | grep depends
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值