Como entender a saída modinfo?

11

Eu só estou tentando entender a modinfosaída que descreve um módulo do kernel. Por exemplo, no caso do módulo i915, a saída é assim:

$ 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)
[...]

Sou capaz de entender alguns dos campos, mas não faço ideia do que significa o seguinte:

  • firmware
  • alias
  • intree
  • vermagic

Alguém sabe como interpretá-los?

Mikhail Morfikov
fonte

Respostas:

13

firmware :

firmware:       i915/skl_dmc_ver1.bin

Muitos dispositivos precisam de duas coisas para funcionar corretamente. Um driver e um firmware. O driver solicita o firmware do sistema de arquivos em /lib/firmware. Este é um arquivo especial, necessário ao hardware, não é um binário. O mergulhador faz o que é necessário para carregar o firmware no dispositivo. O firmware programa o hardware dentro do dispositivo.


alias :

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

Isso pode ser dividido na parte após os caracteres:

  • v00008086: vrepresenta o ID do fornecedor , identifica um fabricante de hardware. Essa lista é mantida pelo PCI Special Interest Group . Seu número 0x8086 significa "Intel Corporation".
  • d00005A84: dsignifica a identificação do dispositivo , selecionada pelo fabricante. Esse ID geralmente é emparelhado com o ID do fornecedor para criar um identificador exclusivo de 32 bits para um dispositivo de hardware. Não existe uma lista oficial e não consegui encontrar uma lista de IDs de dispositivos Intel para procurar esse número.
  • sv*, sd*: A versão do fornecedor do subsistema e a versão do dispositivo do subsistema são para identificação adicional de um dispositivo ( *indica que ele corresponderá a qualquer coisa)
  • bc03: A classe base . Ele define que tipo de dispositivo é; IDE interface, Ethernet controller, USB Controller, ... bc03significa Display controller. Você pode notá-los na saída de lspci, porque lspcimapeia o número para a classe de dispositivo.
  • sc*: Uma subclasse à classe base.
  • i*: interface

entrada :

intree:         Y

Todos os módulos do kernel iniciam seus desenvolvimentos como out-of-tree. Depois que um módulo é aceito para ser incluído, ele se torna um in-treemódulo. Um módulo sem esse sinalizador (definido como N) pode manchar o kernel .


vermagic :

vermagic:       4.2.0-1-amd64 SMP mod_unload modversions

Ao carregar um módulo, as seqüências de caracteres no vermagicvalor são verificadas se corresponderem. Se eles não corresponderem, você receberá um erro e o kernel se recusa a carregar o módulo. Você pode superar isso usando a --forcebandeira de modprobe. Naturalmente, essas verificações existem para sua proteção, portanto, usar esta opção é perigoso.

caos
fonte