Linux核心模組管理

2021-09-05 06:00:15 字數 3094 閱讀 8397

linux

核心模組管理

目錄:

核心模組路徑

檢視已載入的核心

載入與解除安裝核心模組

修改核心引數

linux核心採用的是模組化技術,這樣的設計使得系統核心可以保持最小化,同時確保了核心的可擴充套件性與可維護性,模組化設計允許我們在需要時才將模組載入至核心,實現動態核心調整。本文重點關注方法與思路,具體實現可以參考kernel-doc文件。

2.9.1

核心模組存放位置

linux核心模組檔案的命名方式通常為《模組名稱.ko>,centos 6.3系統的核心模組被集中存放在/lib/modules/`uname -r`/

[1]目錄下(uname -r獲得的資訊為當前核心的版本號)。下面通過幾個例項說明對核心模組的基本操作。

2.9.2

檢視已載入核心模組

lsmod命令用來顯示當前linux核心模組狀態,不是使用任何引數會顯示當前已經載入的所有核心模組。輸出的三列資訊分別為模組名稱、占用記憶體大小、是否在被使用,如果第三列為0則該模組可以隨時解除安裝,非0則無法執行modprobe刪除模組。

[root@centos6 ~]# lsmod 

module                  size  used by 

bridge                 79950   0 

stp                     2173   1 bridge 

llc                     5642    2 bridge,stp 

fuse                   66891   2 

autofs4                27212    3 

sunrpc                263516   1 

ipt_reject              2351    2 

nf_conntrack_ipv4       9506     2 

nf_defrag_ipv4          1483     1 nf_conntrack_ipv4 

iptable_filter           2793    1 

ip_tables              17831    1 iptable_filter 

(部分輸出省略) 

2.9.3

載入與解除安裝核心模組

modprobe命令可以動態載入與解除安裝核心模組:

[root@centos6 ~]# modprobe ip_vs     #動態載入ip_vs模組 

[root@centos7 ~]# lsmod |grep ip_vs  #檢視模組是否載入成功 

[root@centos7 ~]# modprobe -r ip_vs  #動態解除安裝ip_vs模組 

modinfo命令可以檢視核心模組資訊:

[root@centos7 ~]# modinfo ip_vs 

filename:       /lib/modules/2.6.32-279.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko 

license:        gpl 

srcversion:     01386eabc060b63920e181b 

depends:        ipv6,libcrc32c 

vermagic:       2.6.32-279.el6.x86_64 smp mod_unload modversions 

通過上述modprobe方式載入的核心模組僅在當前有效,計算機重啟後並不會再次載入該模組,如果希望系統開機自動掛載核心模組則需要將modprobe命令寫入/etc/rc.sysinit檔案中:

[root@centos7 ~]# echo 「modprobe ip_vs」 >

> /etc/rc.sysinit 

當核心模組不再需要時可以通過將/etc/rc.sysinit檔案中的對應modprobe命令刪除,但需要重啟計算機才生效。此時,可以通過modprobe -r命令來立刻刪除核心模組:

[root@centos6 ~]# modprobe -r ip_vs  

2.9.4

修改核心引數

1.臨時調整核心引數

linux核心引數隨著系統的啟動會被寫入記憶體中,我們可以直接修改/proc目錄下的大量檔案來調整核心引數,並且這種調整是立刻生效的,下面我們來看幾個例項。

開啟核心路由**功能

(通過0

或1設定開關)

[root@centos6 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward  

開啟核心路由**功能:

[root@centos6 ~]# echo "1" > echo "1" >t /proc/sys/net/ipv4/icmp_echo_ignore_all  

調整所有程序總共可以開啟的檔案數量(當大量的使用者訪問**資源時可能會因該數字過小而導致錯誤):

[root@centos6 ~]# echo "108248" >/proc/sys/fs/file-max  

2.永久調整核心引數

可以通過man proc

可以獲得大量關於核心引數的描述資訊。但以上通過直接修改/proc相關檔案的方式在系統重啟後將不再有效,如果希望設定引數並永久生效可以修改/etc/sysctl.conf檔案,檔案格式為選項=值,我們通過vim修改該檔案將前面3個案例引數設定為永久有效:

[root@centos6 ~]# vim /etc/sysctl.conf 

net.ipv4.ip_forward = 1

net.ipv4.icmp_echo_ignore_all = 1

fs.file-max = 108248

注意,通過sysctl.conf檔案

修改的核心引數

不會立刻生效,修改完成後使用sysctl -p

命令可以使這些設定立刻生效。

[1]`是反引符號一般位於鍵盤tab鍵上面。

Linux的核心模組管理命令

核心模組管理是學習linux的乙個重要的必經之路,如果不斷的使用新硬體可能這方面更顯得尤為重要。1.lsmod 列出已經載入的核心模組 lsmod 是列出目前系統中已載入的模組的名稱及大小等 另外我們還可以檢視 proc modules 我們一樣可以知道系統已經載入的模組。2.modinfo 檢視模...

Linux核心模組

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

Linux核心模組

1 核心模組註冊登出 塊載入函式有返回值,模組解除安裝函式無返回值。兩者都是無參函式,載入函式用 init修飾,解除安裝函式用 exit修飾。define init attribute section init.text define exit atrribute section exit,text...