内核模块 kmod命令

insmod:加载模块到内核

insmod [options] modules
--------------------------------------------
-f:不检查当前内核版本是否与模块编译时的一致,强制载入模块
-k:将模块设置为自动卸除
-m:输出模块的载入信息
-o<模块名称>:指定模块的名称,可使用模块文件的文件名
-p:测试模块是否能正确地载入kernel
-s:将所有信息记录在系统记录文件中
-v:执行时显示详细的信息
-x:不要汇出模块的外部符号
-X:汇出模块所有的外部符号,此为预设置

rmmod:从内核中移除指定模块

rmmod [options] modules
--------------------
-v:显示指令执行的详细信息
-f:强制移除模块,使用此选项比较危险
-w:等待着,直到模块能够被除时在移除模块
-s:向系统日志(syslog)发送错误信息
--------------------
如果报目录相关错误,则需要手动创建。

lsmod:显示当前动态载入内核的模块

lsmod modules

depmod:生成模块依赖的映射文件

模块间可能有复杂的依赖顺序。make/make clean、模块的 加载/卸载,这些情况也都要按顺序来,否则会报错。
被依赖的模块:优先编译和加载,最后清理和卸载。
make modules && make modules_install 之后,模块会安装到系统目录 /lib/modules/$(kernel_version)/kernel
modules.dep 为模块依赖关系表,多依赖之间用空格隔开

--------------------
depmod [-b basedir] [-e] [-E Module.symvers] [-F System.map]
    [-n] [-v] [-A] [-P prefix] [-w] [version]
depmod [-e] [-E Module.symvers] [-F System.map] [-m] [-n] [-v]
    [-P prefix] [-w] [version] [filename...]
--------------------
参数说明:
    -a,--all:解析 /lib/modules/$(kernel_version) 下的所有内核模块;
        通过各个模块 EXPORT_SYMBOL 和引用的符号,生成一个模块依赖关系表。
        如果未指定模块的名字,则默认加载所有模块。即 -a 为缺省项。

modprobe:根据依赖关系,加卸载模块,模块名不能带后缀

modprobe [options] modules
--------------------
-a|--all:载入全部的模块
-c|--show-conf:显示所有模块的设置信息
-d|--debug:使用排错模式
-l|--list:显示可用的模块
-r|--remove:卸载模块。且关联模块闲置不用时,自动卸载模块
-t|--type:指定模块类型
-v|--verbose:执行时显示详细的信息
-V|--version:显示版本信息
-help:显示帮助
--------------------------------------------
加载模块的路径:/lib/modules/(shell uname -r)
加载模块的依赖:/lib/modules/(shell uname -r)/modules.dep
depmode:生成 modules.dep,模块文件必须在默认路径存在。

modinfo - 显示内核模块的信息

modinfo <options> <param>
--------------------------------------------
-n|--filename:显示文件名
-a|--author:显示模块开发人员
-d|--description:显示模块的说明
-h|--help:显示modinfo的参数使用方法
-p|--parameters:显示模块所支持的参数
-V|--version:显示版本信息
-F|--field:显示字段值(域值)
Linux内核模块编译、加载、运行机制分析、版本控制、许可声明、内核污染、模块传参、模块签名机制、out-of-tree动态模块编译及Makefile模板编写,尽在《Linux内核编程》,详情点击:王利涛老师个人淘宝店:Linux内核编程