Linux内核模块(二)

·    ko:kernel object
·    so:shared object
[root@rhel6 ~]# ls /lib/modules/$(uname -r)/kernel/arch/x86/kvm
kvm-amd.ko  kvm-intel.ko  kvm.ko
 
·    通过移除内核模块可达到禁用该模块的作用
[root@rhel6 ~ ]# ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage            // 移除 usb-storage.ko 即可禁用 U
ums-alauda.ko   ums-datafab.ko  ums-isd200.ko    ums-karma.ko     ums-sddr09.ko  ums-usbat.ko
ums-cypress.ko  ums-freecom.ko  ums-jumpshot.ko  ums-onetouch.ko  ums-sddr55.ko  usb-storage.ko
 
·    通过 lsmod 查看系统已加载的所有内核模块
[root@rhel6 ~]# lsmod
模块名称                     模块大小     依赖关系
Module                  Size  Used by
ipt_MASQUERADE          2466  0
ipt_REJECT              2383  0
autofs4                26888  3
scsi_transport_fc      52241  3 bnx2fc,fcoe,libfc
scsi_tgt               12173  1 scsi_transport_fc
8021q                  23575  0
iptable_mangle          3349  1
iptable_filter          2793  0
iptable_nat             6158  1
nouveau               708444  0
ext4                  364410  2
mmc_core               72991  1 sdhci
video                  21032  2 nouveau,i915
 
·    通过 modprobe 添加 / 删除内核模块
modprobe 命令主要用于在 Linux2.6 内核中加载和删除 Linux 内核模块,通过此命令可轻松加载和删除 Linux 内核模块,同时会自动解决内核模块之间的依赖关系,并加载相互依赖的模块。
·    添加 vfat 内核模块
[root@rhel6 ~]# lsmod | grep vfat                            // 列出当前内存当中是否已加载 vfat 的内核模块
[root@rhel6 ~]# modprobe vfat                              // 不需加 .ko"
[root@rhel6 ~]# lsmod | grep vfat
vfat                   46529  0
fat                    85873  1 vfat
·    删除 vfat 内核模块
[root@rhel6 ~]# modprobe -r vfat
[root@rhel6 ~]# lsmod | grep vfat
 
·    通过 ins mod / rmmod 添加 / 删除内核模块
insmod 命令主要用于在 Linux2.4 内核之前加载内核模块 , 系统不仅不会自动解决内核模块之间的依赖关系,而且还要求写出详细的模块路径
rmmod 命令主要用于卸载正在使用的 Linux 内核模块 , modprobe -r 命令相似
·    添加 vfat 内核模块
[root@rhel6 ~]# insmod /lib/modules/ 2.6.32 -220.el6.x86_64/kernel/fs/fat/ fat.ko   
[root@rhel6 ~]# insmod /lib/modules/ 2.6.32 -220.el6.x86_64/kernel/fs/vfat/ vfat.ko
[root@rhel6 ~]# lsmod | grep vfat
vfat                   46529  0
fat                    85873  1 vfat
·    删除 vfat 内核模块
[root@rhel6 ~]# rmmod vfat
[root@rhel6 ~]# rmmod fat
[root@rhel6 ~]# lsmod | grep vfat
 
·    通过 depmod 重新注册内核模块信息
( 非系统自带的内核模块不能通过 modprobe 直接加载 , 可通过 insmod 手工加载或者将该内核模块的 *.ko 文件拷贝到相应的目录下通过 depmod 重新注册内核模块信息 )
[root@rhel6 ~]# depmod [-ane]
-a     : 不加任何参数时, depmod 会主动的去分析目前核心的模块,并且重新写入 /lib/modules/$(uname -r)/modules.dep 当中。
         若加入 -a 参数时,则 depmod 会去搜寻比 modules.dep 内还要新的模块,如果找到新模块,才会升级。
-n  : 不写入 modules.dep ,而是将结果输出到屏幕上 (standard out)
-e  : 显示出目前已加载的不可运行的模块名称
 
[root@rhel6 ~]# file /lib/modules/ 2.6.32 -220.el6.x86_64/ modules.dep         
/lib/modules/ 2.6.32 -220.el6.x86_64/modules.dep: ASCII text , with very long lines
[root@rhel6 ~]# rm -f /lib/modules/ 2.6.32 -220.el6.x86_64/modules.dep
[root@rhel6 ~]# depmod                                       // 重新注册当前系统的内核模块信息并生成 modules.dep 文件
[root@rhel6 ~]# ls /lib/modules/ 2.6.32 -220.el6.x86_64| grep modules.dep
modules.dep
modules.dep.bak
[root@rhel6 ~]# ls /lib/modules/ 2.6.32 -220.el6.x86_64/modules.dep
/lib/modules/ 2.6.32 -220.el6.x86_64/modules.dep
[root@rhel6 ~]# depmod -a                               // 注册 /lib/modules/ 下所有内核的内核模块信息
[root@rhel6 ~]# depmod `uname -r`                  // 只注册当前系统中的内核模块信息
·    通过 modinfo 查看内核模块信息
[root@rhel6 ~]# modinfo vfat
filename:       /lib/modules/ 2.6.32 -220.el6.x86_64/kernel/fs/fat/vfat.ko
author:         Gordon Chaffee
description:    VFAT filesystem support
license:        GPL
srcversion:     ACCC2F7E9526F402F526976
depends:        fat
vermagic:       2.6.32 -220.el6.x86_64 SMP mod_unload modversions
 
 
 

你可能感兴趣的:(modules,kernel,modprobe,insmod)