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
多くのデバイスが正常に動作するには2つが必要です。ドライバとファームウェア。ドライバは、ファームウェアが配置されているファイルシステムからファームウェアを要求します/lib/firmware
。これはハードウェアに必要な特殊ファイルであり、バイナリファイルではありません。その後、ドライバはファームウェアをデバイスにロードするために必要な作業を実行します。ファームウェアはデバイス内部のハードウェアをプログラムします。
ニックネーム:
alias: pci:v00008086d00005A84sv*sd*bc03sc*i*
これは文字の後にいくつかの部分に分けることができます。
v00008086
:v
代表するベンダーID、ハードウェアメーカーを識別します。このリストは以下で提供されます。PCIシグ(SIG)。あなたの電話番号0x8086「Intel Corporation」の略です。d00005A84
:d
代表するデバイスID、メーカーが選択します。この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
。もちろん、これらの確認はユーザー保護のためであるため、このオプションを使用することは危険です。