Linux內核模塊的加載以及內核模塊的管理

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 <[email protected]>,Sonal Santan <[email protected]>,Richard Tobin <[email protected]>
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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章