Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块
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来检测和配置硬件