insmod
命令用于將給定的模塊加載到內核中。Linux
有許多功能是通過模塊的方式,在需要時才載入kernel
。如此可使kernel
較為精簡,進而提高效率,以及保有較大的彈性。這類可載入的模塊,通常是設備驅動程序。
注意:需要注意的是使用insmod在加載模塊時,僅僅是臨時加載,即重啟后該模塊會失效。
linux加載驅動命令。2、用法:
語法
insmod(選項)(參數)
選項
-f:不檢查目前kernel版本與模塊編譯時的kernel版本是否一致,強制將模塊載入;
-k:將模塊設置為自動卸除;
-m:輸出模塊的載入信息;
-o<模塊名稱>:指定模塊的名稱,可使用模塊文件的文件名;
-p:測試模塊是否能正確地載入kernel;
-s:將所有信息記錄在系統記錄文件中;
-v:執行時顯示詳細的信息;
-x:不要匯出模塊的外部符號;
-X:匯出模塊所有的外部符號,此為預設置。
vim常用命令、參數
內核模塊:指定要加載的內核模塊文件。
實例
加載RAID1
陣列級別模塊,如下所示:
[root@localhost boot]# insmod /lib/modules/2.6.
18-8.el5/kernel/drivers/md/raid1.ko [root@localhost boot]# lsmod | grep raid1
raid1 25153 0
從以上顯示結果可知,RAID1
模塊已加載成功。只是在使用insmod
命令加載模塊時,需要使用絕對路徑方能加載,且加載時無法自動解決依賴關系。
Linux重新生成設備文件命令,靜態加載就是把驅動程序直接編譯進內核,系統啟動后可以直接調用。靜態加載的缺點是調試起來比較麻煩,每次修改一個地方都要重新編譯和下載內核,效率較低。若采用靜態加載的驅動較多,會導致內核容量很大,浪費存儲空間。
動態加載利用了Linux
的module
特性,可以在系統啟動后用insmod
命令添加模塊(.ko),在不需要的時候用rmmod
命令卸載模塊,采用這種動態加載的方式便于驅動程序的調試,同時可以針對產品的功能需求,進行內核的裁剪,將不需要的驅動去除,大大減小了內核的存儲容量。
【insmod與modprobe命令】
wget命令、在Linux中,modprobe和insmod都可以用來加載module,不過現在一般都推薦使用modprobe而不是insmod了。 modprobe和insmod的區別是什么呢?
modprobe可以解決load module時的依賴關系,比如load moudleA就必須先load mouduleB之類的,它是通過/lib/modules//modules.dep文件來查找依賴關系的。而insmod不能解決依賴問題。
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操作系統跟外部設備(如磁盤、光盤等)的通信都是通過設備文件進行的,應用程序可以打開、關閉、讀寫這些設備文件,從而對設備進行讀寫,這種操作就像讀寫普通的文件一樣easy。linux為不同種類的設備文件提供了相同的接口,比如read(),write(),open(),close()
。
所以在系統與設備通信之前,系統首先要建立一個設備文件,這個設備文件存放在/dev
目錄下。其實系統默認情況下就已經生成了很多設備文件,但有時候我們需要自己手動新建一些設備文件,這個時候就會用到像mkdir, mknod這樣的命令。
mknod 的標準形式為: mknod DEVNAME {b | c} MAJOR MINOR
1,DEVNAME
是要創建的設備文件名,如果想將設備文件放在一個特定的文件夾下,就需要先用mkdir在dev目錄下新建一個目錄;
2, b和c 分別表示塊設備和字符設備:
b表示系統從塊設備中讀取數據的時候,直接從內存的buffer中讀取數據,而不經過磁盤;
c表示字符設備文件與設備傳送數據的時候是以字符的形式傳送,一次傳送一個字符,比如打印機、終端都是以字符的形式傳送數據;
3,MAJOR
和MINOR
分別表示主設備號和次設備號:
為了管理設備,系統為每個設備分配一個編號,一個設備號由主設備號和次設備號組成。主設備號標示某一種類的設備,次設備號用來區分同一類型的設備。linux操作系統中為設備文件編號分配了32位無符號整數,其中前12位是主設備號,后20位為次設備號,所以在向系統申請設備文件時主設備號不好超過4095,次設備號不好超過2^20 -1。
.
下面,我們就可以用mknod
命令來申請設備文件了。
mkdir -p /dev/cobingmknod /dev/cobing/mydev1 c 128 512
注意:不是所有的編譯的模塊是需要通過mknod進行按照后再insmod的,有的模塊僅需要insmod即可。
為了是在命令行中執行insmod
命令安裝的驅動能在重啟之后還有的解決方法大致有一下兩種方法:
(1)直接編譯內核,把想安裝的驅動在編譯內核的時候給編譯進去,這種方法比較麻煩,花的時候也比較的多,一般不采用這種方法(這種方法網上有很多資料可以參考)。
(2)這種方法比較簡單:就是在啟動腳本中加載模塊,這樣每次開機啟動都自動加載相應的驅動模塊。具體的方式如下:
在文件/etc/rc.local中加載你想要的模塊程序即可
比如我想再系統啟動的時候自動給我完成:卸載r8169驅動、然后安裝r8168驅動、同時重啟網絡服務器的工作,那么我在該文件中的exit 0 之前寫如下的語句:
rmmod r8169#(卸載相應的驅動)insmod /usr/src/r8168.ko#(這個是r8168.ko文件放的絕對路徑),這步是安裝相應的驅動ifconfig eth0 downifconfig eth0 up
然后保存,重新啟動reboot
之后,系統就將自動完成我們想要的那幾步工作。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态