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 ~]# lsmodmodule 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_vsfilename: /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_vs2.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-max2.永久調整核心引數
可以通過man proc
可以獲得大量關於核心引數的描述資訊。但以上通過直接修改/proc相關檔案的方式在系統重啟後將不再有效,如果希望設定引數並永久生效可以修改/etc/sysctl.conf檔案,檔案格式為選項=值,我們通過vim修改該檔案將前面3個案例引數設定為永久有效:
[root@centos6 ~]# vim /etc/sysctl.confnet.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...