Jak rozumieć wyjście modinfo?

11

Próbuję zrozumieć dane modinfowyjściowe opisujące moduł jądra. Na przykład w przypadku modułu i915dane wyjściowe wyglądają następująco:

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

Rozumiem niektóre pola, ale nie mam pojęcia, co oznaczają:

  • firmware
  • alias
  • intree
  • vermagic

Czy ktoś wie, jak je interpretować?

Michaił Morfikow
źródło

Odpowiedzi:

13

oprogramowanie układowe :

firmware:       i915/skl_dmc_ver1.bin

Wiele urządzeń potrzebuje dwóch rzeczy do poprawnego działania. Sterownik i oprogramowanie wewnętrzne. Sterownik żąda oprogramowania układowego od systemu plików pod adresem /lib/firmware. Jest to specjalny plik, potrzebny sprzętowi, nie jest to plik binarny. Następnie nurek robi to, co musi zrobić, aby załadować oprogramowanie do urządzenia. Oprogramowanie układowe programuje sprzęt wewnątrz urządzenia.


alias :

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

Można to podzielić na części po znakach:

  • v00008086: voznacza identyfikator dostawcy , identyfikuje producenta sprzętu. Ta lista jest prowadzona przez PCI Special Interest Group . Twój numer 0x8086 oznacza „Intel Corporation”.
  • d00005A84: doznacza identyfikator urządzenia wybrany przez producenta. Ten identyfikator jest zwykle łączony z identyfikatorem dostawcy w celu utworzenia unikalnego 32-bitowego identyfikatora urządzenia sprzętowego. Nie ma oficjalnej listy i nie mogłem znaleźć listy identyfikatorów urządzeń Intela, aby wyszukać tę liczbę.
  • sv*, sd*: Wersja dostawcy podsystemu i wersja urządzenia podsystemu służą do dalszej identyfikacji urządzenia ( *wskazuje, że będzie pasować do czegokolwiek)
  • bc03: Klasa podstawowa . Określa, jakie to urządzenie; IDE interface, Ethernet controller, USB Controller, ... bc03oznacza Display controller. Możesz je zauważyć z wyjścia lspci, ponieważ lspciodwzorowuje numer na klasę urządzenia.
  • sc*: Podklasa do klasy podstawowej.
  • i*: interfejs

intree :

intree:         Y

Wszystkie moduły jądra zaczynają swoje prace jako out-of-tree. Gdy moduł zostanie zaakceptowany do włączenia, staje się in-treemodułem. Moduły bez tej flagi (ustawione na N) mogą skazić jądro .


wermagiczny :

vermagic:       4.2.0-1-amd64 SMP mod_unload modversions

Podczas ładowania modułu ciągi vermagicwartości są sprawdzane, jeśli są zgodne. Jeśli się nie zgadzają, pojawi się błąd, a jądro odmówi załadowania modułu. Możesz temu zaradzić, używając --forceflagi modprobe. Oczywiście kontrole te służą ochronie użytkownika, więc korzystanie z tej opcji jest niebezpieczne.

chaos
źródło