insmod与modprobe的区别及其用法

insmod与modprobe的区别及其用法

  (2013-01-04 14:55:03)
在开发板中加载SD卡驱动时出现了一个问题
/ $ modprobe hi_mci
mmc_core: exports duplicate symbol mmc_detect_change (owned by kernel)
insmod: cannot insert `/lib/modules/2.6.24-rt1-hi3515v100/kernel/drivers/mmc/cor
e/mmc_core.ko': Invalid module format (-1): Exec format error
modprobe: failed to load module hi_mci
大体意思就是mmc_core加载了两遍(一遍为手动加载一遍为内核自动加载的模块);

问题的原因找了好久,后来将手动加载的 modprobe hi_mci这条命令改为了insmod /lib/modules/2.6.24-rt1-hi3515v100/misc/hi_mci.ok后问题解决。

后来分析了modprobe和insmod的关系,之所以报错,是因为modprobe和insmod命令虽然都可以加载模块,但modprobe比较智能,当你使用modprobe加载模块时系统会根据该模块的依赖关系加载其他的模块(即该模块依赖的其他模块)。所以导致mmc_core模块加载了2次。而改为insmod后,系统只加载一个指定模块,即我们要加载的 hi_mci.ko,所以不会再报错,错误解决。

modprobe和 insmod 的区别如下所示:
(以下内容摘自网络资料)
在Linux中,modprobe和insmod都可以用来加载module,不过现在一般都推荐使用modprobe而不是insmod了。
modprobe和insmod的区别是什么呢?
1.modprobe可以解决load module时的依赖关系,比如load moudleA就必须先load mouduleB之类的,它是通过/lib/modules//modules.dep文件来查找依赖关系的。而insmod不能解决依赖问题。
2.modprobe默认会去/lib/modules//下面查找module,而insmod只在给它的参数中去找module(默认在当前目录找)。这样,有时insmod也有它的有用之处,举个例子吧。
有/root/my-mod.ko这个module,cd /root/,然后用insmod my-mod.ko(insmod /root/my-mod.ko)就可以insert这个module了,但是用modprobe my-mod.ko(modprobe /root/my-mod.ko)却提示"FATAL: Module my-mod.ko not found",这就是因为modprobe是到/lib/modules/`uname -r`/下去找module的,如果没找到就是这样了。


linux设备驱动有两种加载方式insmod和modprobe,下面谈谈它们用法上的区别
1、insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址。写法为:
insmod drv.ko
2. modprobe则可以一次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装文件系统时是按照make modues_install的方式安装驱动模块的。驱动被安装在/lib/modules/$(uname -r)/...下。写法为:
modprob drv 
------
modprobe 和insmod一样都是用来加载内核module的
不过modprobe比较智能,它可以根据module的依赖性来自动为你加载;
而insmod就做不到这点。

-------------分隔线------------------
比如说使用ipmitool这个工具需要在dev/中存在ipmi0的设备,如果没有的话就需要加载
modprobe ipmi_si
modprobe ipmi_devintf

读取本地KCS接口的数据使用 -I open 例如
ipmitool -I open sensor

想要卸载module。使用rmmod

  (2013-01-04 14:55:03)
在开发板中加载SD卡驱动时出现了一个问题
/ $ modprobe hi_mci
mmc_core: exports duplicate symbol mmc_detect_change (owned by kernel)
insmod: cannot insert `/lib/modules/2.6.24-rt1-hi3515v100/kernel/drivers/mmc/cor
e/mmc_core.ko': Invalid module format (-1): Exec format error
modprobe: failed to load module hi_mci
大体意思就是mmc_core加载了两遍(一遍为手动加载一遍为内核自动加载的模块);

问题的原因找了好久,后来将手动加载的 modprobe hi_mci这条命令改为了insmod /lib/modules/2.6.24-rt1-hi3515v100/misc/hi_mci.ok后问题解决。

后来分析了modprobe和insmod的关系,之所以报错,是因为modprobe和insmod命令虽然都可以加载模块,但modprobe比较智能,当你使用modprobe加载模块时系统会根据该模块的依赖关系加载其他的模块(即该模块依赖的其他模块)。所以导致mmc_core模块加载了2次。而改为insmod后,系统只加载一个指定模块,即我们要加载的 hi_mci.ko,所以不会再报错,错误解决。

modprobe和 insmod 的区别如下所示:
(以下内容摘自网络资料)
在Linux中,modprobe和insmod都可以用来加载module,不过现在一般都推荐使用modprobe而不是insmod了。
modprobe和insmod的区别是什么呢?
1.modprobe可以解决load module时的依赖关系,比如load moudleA就必须先load mouduleB之类的,它是通过/lib/modules//modules.dep文件来查找依赖关系的。而insmod不能解决依赖问题。
2.modprobe默认会去/lib/modules//下面查找module,而insmod只在给它的参数中去找module(默认在当前目录找)。这样,有时insmod也有它的有用之处,举个例子吧。
有/root/my-mod.ko这个module,cd /root/,然后用insmod my-mod.ko(insmod /root/my-mod.ko)就可以insert这个module了,但是用modprobe my-mod.ko(modprobe /root/my-mod.ko)却提示"FATAL: Module my-mod.ko not found",这就是因为modprobe是到/lib/modules/`uname -r`/下去找module的,如果没找到就是这样了。


linux设备驱动有两种加载方式insmod和modprobe,下面谈谈它们用法上的区别
1、insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址。写法为:
insmod drv.ko
2. modprobe则可以一次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装文件系统时是按照make modues_install的方式安装驱动模块的。驱动被安装在/lib/modules/$(uname -r)/...下。写法为:
modprob drv 
------
modprobe 和insmod一样都是用来加载内核module的
不过modprobe比较智能,它可以根据module的依赖性来自动为你加载;
而insmod就做不到这点。

-------------分隔线------------------
比如说使用ipmitool这个工具需要在dev/中存在ipmi0的设备,如果没有的话就需要加载
modprobe ipmi_si
modprobe ipmi_devintf

读取本地KCS接口的数据使用 -I open 例如
ipmitool -I open sensor

想要卸载module。使用rmmod

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值