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
해석하는 방법을 아는 사람이 있나요?
답변1
펌웨어:
firmware: i915/skl_dmc_ver1.bin
많은 장치가 제대로 작동하려면 두 가지가 필요합니다. 드라이버와 펌웨어. 드라이버는 펌웨어가 위치한 파일 시스템에서 펌웨어를 요청합니다 /lib/firmware
. 이는 하드웨어에 필요한 특수 파일이며 바이너리 파일이 아닙니다. 그런 다음 드라이버는 펌웨어를 장치에 로드하는 데 필요한 작업을 수행합니다. 펌웨어는 장치 내부의 하드웨어를 프로그래밍합니다.
별명:
alias: pci:v00008086d00005A84sv*sd*bc03sc*i*
이는 문자 다음에 여러 부분으로 나눌 수 있습니다.
v00008086
:v
대표하다공급업체 ID, 하드웨어 제조업체를 식별합니다. 이 목록은 다음에서 제공됩니다.PCI 시그(SIG). 당신의 전화번호0x8086"Intel Corporation"의 약자입니다.d00005A84
:d
대표하다장치 아이디, 제조업체가 선택합니다. 이 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
. 물론 이러한 확인은 사용자 보호를 위한 것이므로 이 옵션을 사용하는 것은 위험합니다.