Linux内核模块在形式上以.ko文件存在,首先需要知道的是内核模块的编译也分为动态编译和静态编译,动态编译模块生成.ko文件。动态模块的加载命令如下:insmod ****.ko,比较常见的是Linxu设备驱动以内核模块的形式存在。
关于内核模块管理的常见命令是:lsmod、insmod、rmmod、modinfo、modprobe、depmod
一、基本介绍
内核模块的管理命令安装在kmod包中
[root@DC-F4-01-E6-FA-94 ~]# rpm -ql kmod|grep sbin
/usr/sbin/depmod
/usr/sbin/insmod
/usr/sbin/lsmod
/usr/sbin/modinfo
/usr/sbin/modprobe
/usr/sbin/rmmod
/usr/sbin/weak-modules
CentOS中所有与内核模块相关的文件都存放在"/lib/modules/$(uname -r)/“下面
[root@DC-F4-01-E6-FA-94 ~]# cd /lib/modules/$(uname -r)/
[root@DC-F4-01-E6-FA-94 3.10.0-693.2.2.rt56.623.el7.x86_64]# ls
build modules.block modules.devname modules.softdep vdso
extra modules.builtin modules.drm modules.symbols weak-updates
kernel modules.builtin.bin modules.modesetting modules.symbols.bin
modules.alias modules.dep modules.networking source
modules.alias.bin modules.dep.bin modules.order updates
[root@DC-F4-01-E6-FA-94 3.10.0-693.2.2.rt56.623.el7.x86_64]#
二、命令的详解
1、lsmod :显示已经加载到内核中的模块的状态信息
[root@DC-F4-01-E6-FA-94 3.10.0-693.2.2.rt56.623.el7.x86_64]# lsmod|head -4
Module Size Used by
nr_drv 65825 0
vtsspp 389226 0
sep4_1 777016 0
2、modinfo:查看模块的基本信息
[root@DC-F4-01-E6-FA-94 3.10.0-693.2.2.rt56.623.el7.x86_64]# modinfo /home/gnb_image/libs/cpa_sub6/rec/drv/nr_drv.ko
filename: /home/gnb_image/libs/cpa_sub6/rec/drv/nr_drv.ko
license: Dual BSD/GPL
version: 2017.0.45
author: Leon Woestenberg <leon@sidebranch.com>,Sonal Santan <sonal.santan@xilinx.com>,Richard Tobin <richard.tobin@xilinx.com>
license: GPL v2
rhelversion: 7.4
srcversion: 7FC7569E26685EBDCB1A2E4
alias: pci:v00001172d0000EAAAsv*sd*bc*sc*i*
alias: pci:v00001172d0000EBBBsv*sd*bc*sc*i*
alias: pci:v00001172d00000FECsv*sd*bc*sc*i*
alias: pci:v00001172d0000E003sv*sd*bc*sc*i*
alias: pci:v00001172d0000E002sv*sd*bc*sc*i*
alias: pci:v00001172d0000E001sv*sd*bc*sc*i*
alias: pci:v000010EEd0000903Fsv*sd*bc*sc*i*
depends:
vermagic: 3.10.0-693.2.2.rt56.623.el7.x86_64 SMP preempt mod_unload modversions
parm: major:Device major number, default is 0 (dynamic value) (uint)
parm: poll_mode:Set 1 for hw polling, default is 0 (interrupts) (uint)
parm: enable_credit_mp:Set 1 to enable creidt feature, default is 0 (no credit control) (uint)
3、insmod 将指定模块加载到内核中,modprobe和其功能一致
4、rmmod 将已加载的模块从内核中移植,modprobe -r 命令与其功能一致
5、modprobe 加载或者卸载内核模块
modprobe dev_nr.ko 加载
modprobe -r dev_nr.ko 卸载模块
6、depmod :查找/lib/moduels/(uname -r)中的所有模块并建立modules.dep.bin 文件,该文件记录了模块位置及其依赖关系
[root@DC-F4-01-E6-FA-94 3.10.0-693.2.2.rt56.623.el7.x86_64]# ls | grep dep
modules.dep
modules.dep.bin
modules.softdep
[root@DC-F4-01-E6-FA-94 3.10.0-693.2.2.rt56.623.el7.x86_64]# rm -rf modules.dep.bin
[root@DC-F4-01-E6-FA-94 3.10.0-693.2.2.rt56.623.el7.x86_64]# depmod
[root@DC-F4-01-E6-FA-94 3.10.0-693.2.2.rt56.623.el7.x86_64]# ls | grep dep
modules.dep
modules.dep.bin
modules.softdep