Linux核心模組(二)

2021-09-03 09:52:13 字數 4598 閱讀 7967

·

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

·通過insmod/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

linux驅動學習 二 核心模組

因為linux 核心的整體結構非常龐大,包含的元件非常多,如何使用需要的元件呢?有一種方法是把所有的元件都編譯進核心檔案 zimage 或bzimage 但是這樣會產生兩個問題 一是生成的核心檔案過大 二是如果要新增或刪除某乙個元件,需要重新刪除編譯整個核心。於是我們需找另外一種機制讓核心檔案本身不...

Linux核心LED模組分析 二

linux核心led模組分析 二 上次分析到那裡後,還是有些同志說看不懂,那我就繼續分析一把我認為不需要繼續分析的東西吧。上回分析了 led cdev和trigger的關係後就沒有繼續說了。有同志還是沒明白怎麼呼叫的。幹活的函式是 static void led heartbeat function...

Linux核心模組

核心模組 在整個啟動的過程中,是否能成功的驅動我們主句的硬體裝置,是核心完成的工作,而核心一般都是壓縮文件,在使用之前核心之前必須要將核心減壓到的記憶體中。為了應對日新月異的硬體,目前核心都具有可讀取模組化驅動程式的功能,也就是所謂的 modules模組化 所謂模組化。核心與核心模組放在 核心 bo...