核心模組的載入與解除安裝
Linux核心是個很龐大的東西,要全部瞭解清楚是很難的,所以我們所做的核心上的開發也是為驅動做一些基本的準備。
其中Linux的系統的構成、核心的構成還有核心的目錄結構在這裡就不去做過多的解釋,有興趣的可以自己查詢相關的資料。
一、核心模組的特點
a) 不會被編譯進核心之中,這樣的話可以儘可能的控制Linux核心的大小。
b) 在核心執行期間,可以動態的進行載入或解除安裝。
二、相關函式的介紹
a) module_init巨集表示在載入模組的時候,自動呼叫這個巨集所指示的函式。
b) module_exit巨集表示在解除安裝模組的時候,自動呼叫這個巨集所指示的函式。
例如:
程式碼中:
module_init(funa);
module_exit(funb);
當載入該模組時,自動呼叫funa函式,同理當解除安裝該模組時,自動呼叫funb函式。
三、模組的相關命令
a) 載入模組:insmod modprobe
b) 解除安裝模組:rmmod
c) 檢視模組:lsmod
insmod和modprobe的區別:
當a模組與b模組有依賴關係時,假設安裝b模組需先安裝a模組。
如果用insmod命令那麼需要先insmod a.ko 然後再insmod b.ko。
如果用modprobe命令那麼直接可以modprobeb.ko。
其中/lib/modules/“核心版本號”/modules.dep中記錄了模組之間的依賴關係。
rmmod命令:只需要呼叫模組名即可,比如安裝的時候是inmod a.ko 安裝完畢後該模組存在於核心中的名字為a,那麼解除安裝該模組只需要rmmod a即可。