圖解Linux命令之--insmod命令
insmod命令-->install module的縮寫,用來載入模組,通過模式的方式在需要時載入核心,可使核心精簡,高效。此類載入的模組,通常為裝置驅動程式.
【insmod命令作用】
靜態載入就是把驅動程式直接編譯進核心,系統啟動後可以直接呼叫。靜態載入的缺點是除錯起來比較麻煩,每次修改一個地方都要重新編譯和下載核心,效率較低。若採用靜態載入的驅動較多,會導致核心容量很大,浪費儲存空間。
動態載入利用了Linux的module特性,可以在系統啟動後用insmod命令新增模組(.ko),在不需要的時候用rmmod命令解除安裝模組,採用這種動態載入的方式便於驅動程式的除錯,同時可以針對產品的功能需求,進行核心的裁剪,將不需要的驅動去除,大大減小了核心的儲存容量。
【insmod與modprobe命令】
在Linux中,modprobe和insmod都可以用來載入module,不過現在一般都推薦使用modprobe而不是insmod了。
modprobe和insmod的區別是什麼呢?
1) modprobe可以解決load module時的依賴關係,比如load moudleA就必須先load mouduleB之類的,它是通過/lib/modules//modules.dep檔案來查詢依賴關係的。而insmod不能解決依賴問題。
2) modprobe預設會去/lib/modules/目錄下面查詢module,而insmod只在給它的引數中去找module(預設在當前目錄找)。
這樣,有時insmod也有它的有用之處,舉個例子吧。
有/root/my-mod.ko這個module,cd /root/,然後用insmod my-mod.ko(insmod /root/my-mod.ko)就可以insert這個module了,但是用modprobe my-mod.ko(modprobe /root/my-mod.ko)卻提示"FATAL: Module my-mod.ko not found",這就是因為modprobe是到/lib/modules/`uname -r`/下去找module的,如果沒找到就是這樣了。
【檢查Linux核心】
安裝前要檢查核心版本和核心標頭檔案版本是否一致,否則報錯
由此可見核心版本和核心標頭檔案版本是一致的,都是4.2.0-27。
如果不一致的話在insmod一步必定出錯:Error
inserting './hello.ko': -1 Invalid module format