1、insmod命令簡介:
insmod全稱是install module,用於載入模塊 install loadable kernel module。
2、語法:
insmod [-fkmpsvxX][-o <模塊名稱>][模塊文件][符號名稱 = 符號值]
3、參數:
-f 不檢查目前kernel版本與模塊編譯時的kernel版本是否一致,強制將模塊載入。
-k 將模塊設置為自動卸除。
-m 輸出模塊的載入信息。
-o <模塊名稱> 指定模塊的名稱,可使用模塊文件的文件名。
-p 測試模塊是否能正確地載入kernel。
-s 將所有信息記錄在系統記錄文件中。
-v 執行時顯示詳細的信息。
-x 不要匯出模塊的外部符號。
-X 匯出模塊所有的外部符號,此為預設置。
4、使用説明:
Linux有許多功能是通過模塊的方式,在需要時才載入kernel。如此可使kernel較為精簡,進而提高效率,以及保有較大的彈性。這類可載入的模塊,通常是設備驅動程序。
insmod命令主要用於在Linux 2.4內核之前加載Linux內核模塊命令。對於通過此命令加載的Linux內核模塊,系統不僅不會自動解決內核模塊之間的依賴關係,而且還要求將模塊路徑寫詳細。所以在Linux 2.6內核出現時,此命令已漸漸被遺忘。
加載RAID1陣列級別模塊,如下所示:
[root@rhel5 boot]# insmod /lib/modules/2.6.
18-8.el5/kernel/drivers/md/raid1.ko
[root@rhel5 boot]# lsmod |grep raid1
raid1 25153 0
從以上顯示結果可知,RAID1模塊已加載成功。只是在使用insmod命令加載模塊時,需要使用絕對路徑方能加載,且加載時無法自動解決依賴關係。
5、insmod 和modprobe的區別:
insmod 與 modprobe 都是載入 kernel module,不過一般差別於 modprobe 能夠處理 module 載入的相依問題。
比方你要載入 a module,但是 a module 要求系統先載入 b module 時,直接用 insmod 掛入通常都會出現錯誤訊息,不過 modprobe 倒是能夠知道先載入 b module 後才載入 a module,如此相依性就會滿足。
不過 modprobe 並不是大神,不會厲害到知道 module 之間的相依性為何,該程式是讀取 /lib/modules/2.6.xx/modules.dep 檔案得知相依性的。而該檔案是透過 depmod 程式所建立。