Как понять вывод modinfo?

11

Я просто пытаюсь понять modinfoвывод, который описывает модуль ядра. Например, в случае модуля 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

Кто-нибудь знает, как их интерпретировать?

Михаил Морфиков
источник

Ответы:

13

прошивка :

firmware:       i915/skl_dmc_ver1.bin

Многим устройствам для правильной работы нужны две вещи. Драйвер и прошивка. Драйвер запрашивает прошивку из файловой системы по адресу /lib/firmware. Это специальный файл, необходимый для аппаратного обеспечения, это не бинарный файл. Затем дайвер делает все, что нужно для загрузки прошивки в устройство. Прошивка выполняет программирование оборудования внутри устройства.


псевдоним :

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

Это можно разделить на части после символов:

  • v00008086: vобозначает идентификатор поставщика , он идентифицирует производителя оборудования. Этот список поддерживается Специальной группой интересов PCI . Ваш номер 0x8086 означает «Корпорация Intel».
  • d00005A84: dобозначает идентификатор устройства , который выбран производителем. Этот идентификатор обычно соединяется с идентификатором поставщика, чтобы создать уникальный 32-битный идентификатор для аппаратного устройства. Официального списка нет, и я не смог найти список идентификаторов устройств Intel для поиска этого номера.
  • sv*, sd*: Версия поставщика подсистемы и версия устройства подсистемы предназначены для дальнейшей идентификации устройства ( *указывает, что оно будет соответствовать чему угодно)
  • bc03: Базовый класс . Это определяет, что это за устройство; IDE interface, Ethernet controller, USB 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. Естественно, эти проверки существуют для вашей защиты, поэтому использование этой опции опасно.

хаос
источник