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)
insmod与modprobe的区别及其用法
(2013-01-04 14:55:03)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
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