如何理解modinfo的输出?


11

我只是想了解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

有人知道如何解释它们吗?

Answers:


13

固件

firmware:       i915/skl_dmc_ver1.bin

许多设备需要两件事才能正常运行。驱动程序和固件。驱动程序在处从文件系统请求固件/lib/firmware。这是硬件所需的特殊文件,不是二进制文件。然后,潜水员执行将固件加载到设备中所需的操作。固件会对设备内部的硬件进行编程。


别名

alias:          pci:v00008086d00005A84sv*sd*bc03sc*i*

可以将其分成以下字符部分:

  • v00008086v代表供应商ID,它标识硬件制造商。该清单由PCI特别兴趣小组维护。您的数字0x8086代表“英特尔公司”。
  • d00005A84d代表由制造商选择的设备ID。此ID通常与供应商ID配对,以形成硬件设备的唯一32位标识符。没有官方列表,我无法找到英特尔设备ID列表来查找该号码。
  • sv*sd*子系统供应商版本子系统设备版本用于设备的进一步标识(*指示它将匹配任何内容)
  • bc03基类。它定义了它是哪种设备。IDE interfaceEthernet controllerUSB Controller,... bc03表示Display controller。您可能会从的输出中注意到它们lspci,因为lspci将数字映射到设备类。
  • sc*:基类的类。
  • i*:界面

intree

intree:         Y

所有内核模块的开发都始于out-of-tree。一旦一个模块被接受包含在内,它将成为一个in-tree模块。没有该标志(设置为N)的模块可能会污染内核


神奇的

vermagic:       4.2.0-1-amd64 SMP mod_unload modversions

加载模块时,将vermagic检查值中的字符串是否匹配。如果它们不匹配,您将得到一个错误,内核将拒绝加载该模块。您可以通过使用--force标志来克服这一点modprobe。当然,这些检查是为了保护您,因此使用此选项很危险。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.