Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块

2022-09-10 479℃

Linux中mod相关的命令 内核模块化   mod相关命令都是用来动态加载内核模块/驱动程序模块

http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjzMvMcGkzCwlxrj5L7YGKGd90hKX0iVU1Du5fa-6GvG0sw_hIoxwNh9rvwM9C2y3NN1RRa  鸟哥私房菜

 

module-init-tools:Linux内核可加载模块管理工具

rpm -ql module-init-tools
/etc/depmod.d
/etc/depmod.d/dist.conf
/etc/modprobe.d
/etc/modprobe.d/dist-alsa.conf
/etc/modprobe.d/dist-oss.conf
/etc/modprobe.d/dist.conf
/etc/modprobe.d/local.conf
/sbin/depmod
/sbin/insmod
/sbin/insmod.static
/sbin/lsmod
/sbin/modinfo
/sbin/modprobe
/sbin/rmmod
/sbin/weak-modules

 

 

其实跟程序的动态库的原理和作用一样,内核在用到的时候调用相应的内核模块,内核模块化

Linux驱动程序有两种加载方式:一种是静态地编译进内核,内核启动时自动加载,另一种是编写为内核/驱动模块,使用insmod命令将模块动态加载到正在运行的内核,

不需要时用rmmod命令将模块卸载。

LVS的IPVS模块也是采用动态加载的方式

 

命令有六个:modprobe(Linux 2.6新增)、depmod、insmod  、lsmod、rmmod、modinfo

mod:module内核模块

modprobe、insmod和depmod包含在一个名为modutils或mod-utils的工具包


modprobe

简介
Linux命令:modprobe 。
功能说明:自动处理可载入模块。
语 法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]。
补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。
内容
1、modprobe 命令是根据depmod -a的输出/lib/modules/kernel version/modules.dep来加载全部的所需要模块。
2、删除模块的命令是:modprobe -r filename。
3、系统启动后,正常工作的模块都在/proc/modules文件中列出使用lsmod命令也可显示相同内容
4、在内核中有一个“Automatic kernel module loading"功能被编译到了内核中。当用户尝试打开某类型的文件时,内核会根据需要尝试加载相应的模块。

/etc/modules.conf或 /etc/modprobe.conf文件是一个自动处理内核模块的控制文件。

cat /lib/modules/version/modules.dep
cat: /lib/modules/version/modules.dep: No such file or directory
参数
-a或--all  载入全部的模块。
-c或--show-conf  显示所有模块的设置信息。
-d或--debug  使用排错模式。
-l或--list  显示可用的模块。
-r或--remove  模块闲置不用时,即自动卸载模块。
-t或--type  指定模块类型。
-v或--verbose  执行时显示详细的信息。
-V或--version  显示版本信息。
-help  显示帮助。
操作
insmod 与 modprobe 都是载入 kernel module,不过一般差别在于 modprobe 能够处理 module 载入的依赖问题。
比如你要载入 a module,但是 a module 要求系统先载入 b module 时,直接用 insmod 载入通常都会出现错误讯息,不过 modprobe 倒是能够知道先载入 b module 后才载入 a module,如此相依性就会满足。
不过 modprobe 并不是大神,不会厉害到知道 module 之间的相依性为何,该程序是读取 /lib/modules/2.6.xx/modules.dep 文件得知依赖的。而该档案是透过 depmod 程式所建立。

modprobe   -r igb    删除igb模块

使用模块选项有两个方法

第一个  加载igb的时候到igb.conf文件里找

echo "options igb max_vfs=7"  >>/etc/modprobe.d/igb.conf

modprobe igb

第二个  在命令里指定选项

modprobe igb  max_vfs=7

深度实践KVM P49

 

depmod
模块依赖程序

/sbin/depmod -a 

遍历文件/lib/modules/内核版本/modules.dep (模块依赖关系 该文件由depmod -a 命令建立的,保存了内核模块的依赖关系,使得在装入指定模块前装入那些事先需要装入的模块

 

 

insmod  
载入模块

insmod  first_time.ko

 

 


lsmod
列出内核已加载的模块

lsmod
Module                   Size        Used by
kvm                     337772   1  kvm_intel   kvm内核模块
ipmi_si                  44687    1 acpi_ipmi
ipmi_msghandler     38826   2 acpi_ipmi,ipmi_si

 

 

rmmod
卸载模块

rmmod first_time.ko

 


modinfo
查看模块信息

modinfo  first_time.ko

 




[root@localhost huage]# lsmod               //列出当前系统已加载的模块
Module                  Size  Used by
usb_storage            39114  0
cdrom                  34035  1 sr_mod
。。。。。。
。。。。。。
。。。。。。
 

[root@localhost huage]# lsmod |grep usb-storage

 


[root@localhost huage]# modprobe -r usb_storage     //删除模块;删除模块时需要加‘-r’参数
[root@localhost huage]# lsmod |grep usb

 


[root@localhost huage]# modprobe usb-storage          //添加模块;添加模块时,直接加模块名就可以了
[root@localhost huage]# lsmod |grep usb
usb_storage            39114  0


//使用modprobe命令添加或删除模块时,‘_’和‘-’没有区别,即下划线和中划线没有区别


不要跟ldd命令搞混了,ldd是显示程序所用的动态库 load dynamic library

 

Linux就这个范儿 第15章 七种武器

http://www.cnblogs.com/MYSQLZOUQI/p/5335649.html
modprobe、insmod和depmod包含在一个名为modutils或mod-utils的工具包内。这些工具帮助你自动或手动地装载模块。有的时候你想人为控制一个模块什么时候被装入,例如当装入某个模块会导致问题时,

你不想让某个模块被kernel自动装入,你可以把这个模块列到黑名单中不让它跨进内核的大门


在Linux 2.6之前,驱动模块是智能型的,它的加载是通过扫描总线寻找它识别的设备ID号来实现。
Linux2.6把这部分功能做了梳理,化复杂为简单,硬件检测外部化。
利用外部程序以及模块加载器来判断模块支持哪些设备。
除了insmod与rmmod外,Linux 2.6加载命令还有modprobe。modprobe同时会加载当前模块所依赖的其他模块。
在Red Hat Linux中,还可以使用PnP设备的检测程序kudzu来检测和配置硬件

标签: LINUX 驱动

非特殊说明,本博所有文章均为博主原创。