Linux
如何理解 modinfo 輸出?
我只是想了解
modinfo
描述核心模組的輸出。例如,對於 modulei915
,輸出如下所示:$ modinfo i915 filename: /lib/modules/4.2.0-1-amd64/kernel/drivers/gpu/drm/i915/i915.ko license: GPL and additional rights description: Intel Graphics author: Intel Corporation [...] firmware: i915/skl_dmc_ver1.bin alias: pci:v00008086d00005A84sv*sd*bc03sc*i* [...] depends: drm_kms_helper,drm,video,button,i2c-algo-bit intree: Y vermagic: 4.2.0-1-amd64 SMP mod_unload modversions parm: modeset:Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, 1=on, -1=force vga console preference [default]) (int) [...]
我能夠理解一些領域,但我不知道以下是什麼意思:
firmware
alias
intree
vermagic
有誰知道如何解釋它們?
韌體:
firmware: i915/skl_dmc_ver1.bin
許多設備需要兩件事才能正常執行。一個驅動程序和一個韌體。驅動程序從位於的文件系統請求韌體
/lib/firmware
。這是硬體需要的特殊文件,它不是二進製文件。然後,潛水員執行將韌體載入到設備中所需的操作。韌體對設備內部的硬體進行程式。別名:
alias: pci:v00008086d00005A84sv*sd*bc03sc*i*
這可以在字元之後的部分中拆分:
v00008086
:v
代表vendor id,它標識硬體製造商。該列表由PCI 特別興趣小組維護。您的號碼0x8086代表“英特爾公司”。d00005A84
:d
代表設備ID,由製造商選擇。此 ID 通常與供應商 ID 配對,為硬體設備創建一個唯一的 32 位標識符。沒有官方列表,我無法找到英特爾設備 ID 列表來查找該號碼。sv*
,sd*
:子系統供應商版本和子系統設備版本用於進一步辨識設備(*
表示它將匹配任何內容)bc03
:基類。它定義了它是什麼類型的設備;IDE interface
,Ethernet controller
,USB Controller
, …bc03
代表Display controller
。您可能會從 的輸出中註意到它們lspci
,因為lspci
將數字映射到設備類。sc*
: 基類的子類。i*
: 界面條目:
intree: Y
所有核心模組都以
out-of-tree
. 一旦一個模組被接受被包含,它就成為一個in-tree
模組。沒有該標誌(設置為N
)的模組可能會污染核心。神奇的:
vermagic: 4.2.0-1-amd64 SMP mod_unload modversions
載入模組時,
vermagic
會檢查值中的字元串是否匹配。如果它們不匹配,您將收到一個錯誤並且核心拒絕載入該模組。您可以通過--force
使用modprobe
. 自然,這些檢查是為了保護您,因此使用此選項是危險的。