日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux驱动模块命令大全insmod/rmmod/modprobe/depmod/lsmod

發(fā)布時(shí)間:2023/12/15 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux驱动模块命令大全insmod/rmmod/modprobe/depmod/lsmod 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

玩過linux程序開發(fā)的人都知道,當(dāng)一個(gè)驅(qū)動(dòng)程序以模塊化的模式編譯之后,它并不是隨著系統(tǒng)啟動(dòng)而直接活躍的,而是靜靜的躺在內(nèi)核的某個(gè)角落里,此時(shí)是不可用的。應(yīng)用程序想要調(diào)用該驅(qū)動(dòng),則必須先加載,然后才能使用。而且,使用完還存在一個(gè)卸載的過程。那么,這些個(gè)驅(qū)動(dòng)模塊,該如何加載?又該如何卸載?又能否通過某個(gè)命令來進(jìn)行統(tǒng)一管理或者查看呢?下面我們就來逐一分析。

一、驅(qū)動(dòng)模塊的加載

一般來說,insmod和modprobe這兩個(gè)命令都可以完成驅(qū)動(dòng)模塊的加載過程。下面以hello.ko驅(qū)動(dòng)模塊為例來解釋:

1、insmod命令

進(jìn)入hello.ko驅(qū)動(dòng)模塊文件所在的目錄,然后直接輸入下面的命令即可:

insmod hello.ko

2、modprobe命令

首先必須將hello.ko文件拷貝到/lib/module/#uname -r#/目錄下【為方便敘述,下文中統(tǒng)一稱為驅(qū)動(dòng)模塊安裝目錄】。

這里要說明一下,#uname -r#的意思是,在終端中輸入uname -r后顯示的內(nèi)核版本及名稱。例如我目前正在玩的mini2440開發(fā)板中,#uname -r#就是2.6.32.2-FriendlyARM,所以,編譯好的驅(qū)動(dòng)模塊就必須放在/lib/module/2.6.32.2-FriendlyARM這個(gè)目錄下。

然后執(zhí)行以下命令即可:

depmod # 更新modules.dep和modules.dep.bb文件,記錄模塊的依賴關(guān)系 modprobe hello # 注意這里無(wú)需輸入.ko后綴

3、二者對(duì)比

總結(jié)一下,如上所述,insmod和modprobe都可以用來載入kernel module,但是二者還是有差別的,主要體現(xiàn)在modprobe能夠處理module載入的依賴性問題。

比方你要載入a module,而a module需要系統(tǒng)先載入b module,此時(shí)如果直接用insmod載入,通常都會(huì)出錯(cuò),不過當(dāng)你使用modprobe命令時(shí),系統(tǒng)就能夠分析出其中的依賴關(guān)系,于是會(huì)自動(dòng)先載入b module然后再載入a module。

當(dāng)然,modprobe 并不是大神,不可能真的是全自動(dòng)分析,它只是讀取了驅(qū)動(dòng)模塊安裝目錄下的modules.dep文件,從而分析出各個(gè)模塊的依賴性的,而該文件則是通過depmod命令所建立,這就是上面為什么要先執(zhí)行一下depmod命令然后再執(zhí)行modprobe命令的原因了。當(dāng)然,如果你不執(zhí)行depmod命令,modprobe命令可能也可以執(zhí)行成功,但是你本次載入的模塊就沒有與系統(tǒng)其他驅(qū)動(dòng)模塊建立依賴關(guān)系,無(wú)法形成一個(gè)有機(jī)的整體。

也就是說,如果你確定你要加載的驅(qū)動(dòng)模塊不依賴其他驅(qū)動(dòng)模塊的話,既可以insmod也可以modprobe,當(dāng)然insmod可以在任何目錄下執(zhí)行,更方便一些。而如果你要加載的驅(qū)動(dòng)模塊還依賴其他ko驅(qū)動(dòng)模塊的話,就只能將模塊拷貝到上述的特定目錄,depmod后再modprobe。

二、驅(qū)動(dòng)模塊的卸載

上面既然已經(jīng)了解了如何加載一個(gè)驅(qū)動(dòng)模塊,自然也要介紹一下如何卸載一個(gè)驅(qū)動(dòng)模塊。與加載命令對(duì)應(yīng),卸載命令也有兩個(gè):

1、rmmod

在任何目錄下輸入以下命令即可:

rmmod module_name

注意:其中”module_name”是lsmod顯示的模塊名稱,而不是對(duì)應(yīng)的ko文件名。

2、modprobe命令

modprobe -r hello # 注意這里無(wú)需輸入.ko后綴 depmod # 更新modules.dep和modules.dep.bb文件,記錄模塊的依賴關(guān)系

同上所述,使用modprobe命令來卸載一個(gè)模塊時(shí),它也會(huì)自動(dòng)更新驅(qū)動(dòng)模塊安裝目錄下的modules.dep和modules.dep.bb文件,從而將該模塊完整的卸載掉。

三、模塊列表的查看

在任何目錄下,都可以輸入下面的命令來查看已加載的驅(qū)動(dòng)模塊列表。

leon@Ubuntu:~$ lsmod Module Size Used by vboxsf 45056 3 bnep 20480 2 rfcomm 69632 0 bluetooth 512000 10 bnep,rfcomm binfmt_misc 20480 1 nfsd 315392 13 auth_rpcgss 57344 1 nfsd nfs_acl 16384 1 nfsd nfs 249856 0 lockd 94208 2 nfs,nfsd grace 16384 2 nfsd,lockd sunrpc 331776 19 nfs,nfsd,auth_rpcgss,lockd,nfs_acl fscache 65536 1 nfs snd_intel8x0 40960 2

總結(jié)

以上是生活随笔為你收集整理的linux驱动模块命令大全insmod/rmmod/modprobe/depmod/lsmod的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。