在系統上執行depmod-a命令后,會在/lib/modules/`uname-r`/目錄下創建modules.*map文件,如何能確認硬件所需要的驅動模塊是什么,就需要通過硬件的ID,來查看/lib/modules/`uname-r`/modules.pcimap中定義的模塊名稱,下面講解下modules.pcimap文件構造。
/lib/modules/`uname-r`/modules.pcimap文件說明:1、在文件的第一行有個注釋,分別介紹每列的含義:
[html]viewplaincopy- #pcimodulevendordevicesubvendorsubdeviceclassclass_maskdriver_data
- #模塊名稱、生產商ID、設備ID、次生產商ID、次設備ID、類型編號、類型掩碼、驅動數據。
2、其中ID是使用8個十六進制的數字表示,即前面的0x符號就表示十六進制,而lspci只能得到4位十六進制數,所以,只要lspci的4位數能夠和modules.pcimap中ID的后4位相同即可。例如:在執行lspci-n時得到的信息是10ec:8139,那么在modules.pcimap中,相同的信息就是0x000010ec0x00008139,就可以確定該硬件所需驅動是8139cp模塊;
3、如果次生產商ID和次設備ID都是0xffffffff的話,就表示該模塊能夠支持所有生產商ID和設備ID相同的設備,例如:
說明:8139cp模塊能夠支持生產商ID為0x000010ec設備ID為0x00008139的所有設備;
但是,如果生產商ID是0xffffffff時,那么支持的設備就有特定情況,例如:
說明:8139too模塊能夠支持設備ID是0x00008139、次生產商ID是0x000013d1、次設備ID是0x0000ab06的所有設備;
4、同一個模塊能夠支持多個設備。
注意事項:在modules.pcimap文件中,會存在一些生產商ID:設備ID相同,但它們所對應的驅動模塊卻不相同的情況,例如:
此時,優先順序應該遵循下面的原則:1、查找生產商ID:設備ID和次生產商ID:次設備ID相同的專用模塊;2、查找設備ID和次生產商ID:次設備ID相同的通用模塊;3、查找設備ID建議的驅動模塊;4、查找生產商ID:設備ID標準的驅動模塊。
因為工作需要,公司超哥寫了個排序的命令: