在Linux中,modprobe和insmod都可以用來載入module,不過現在一般都推薦使用modprobe而不是insmod了。
modprobe和insmod的區別是什麼呢?
1.modprobe可以解決load module時的依賴關係,比如load moudleA就必須先load mouduleB之類的,它是通過/lib/modules/<kernel-version>/modules.dep檔案來尋找依賴關係的。而insmod不能解決依賴問題。
2.modprobe預設會去/lib/modules/<kernel-version>/下面尋找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裝置驅動有兩種載入方式insmod和modprobe,下面談談它們用法上的區別
1、insmod一次只能載入特定的一個裝置驅動,且需要驅動的具體地址。寫法為:
insmod drv.ko
2. modprobe則可以一次將有依賴關係的驅動全部載入到核心。不加驅動的具體地址,但需要在安裝檔案系統時是按照make modues_install的方式安裝驅動模組的。驅動被安裝在/lib/modules/$(uname -r)/...下。寫法為:
modprob drv
------
modprobe 和insmod一樣都是用來載入核心module的
不過modprobe比較智能,它可以根據module的依賴性來自動為你載入;
而insmod就做不到這點。
-------------分隔線------------------
比如說使用ipmitool這個工具需要在dev/中存在ipmi0的裝置,如果沒有的話就需要載入
modprobe ipmi_si
modprobe ipmi_devintf
讀取本地KCS介面的資料使用 -I open 例如
ipmitool -I open sensor
想要卸載module。使用rmmod