Linux

如何理解 modinfo 輸出?

  • October 23, 2015

我只是想了解modinfo描述核心模組的輸出。例如,對於 module i915,輸出如下所示:

$ 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. 自然,這些檢查是為了保護您,因此使用此選項是危險的。

引用自:https://unix.stackexchange.com/questions/238167