$ apropos modinfo
modinfo (8) - display information about a kernel module
$ modinfo cpuid.ko
filename: cpuid.ko
author: H. Peter Anvin <[email protected]>
description: x86 generic CPUID driver
license: GPL
vermagic: 2.6.37 SMP preempt mod_unload PENTIUM4 gcc-4.4.5
depends:
ランタイム メソッド
insmod /module_version.ko
cat /sys/modules/module_version/version
# => 1.0
cat /sys/module/module_version/srcversion
# => AB0F06618BC3A36B687CDC5
modinfo /module_version.ko | grep -E '^(src|)version'
# => version: 1.0
# => srcversion: AB0F06618BC3A36B687CDC5
カーネル 4.9.6 でこの設定でテスト済み。
/sys/modules/module_version/version
version
MODULE_VERSION
によって設定されます マクロ。
MODULE_VERSION
の場合、ファイルは存在しません マクロはモジュールで使用されていません。
/sys/module/module_version/srcversion
srcversion
カーネル モジュールのコンパイルに使用されるソース コードの MD4 ハッシュです。これはビルド時に https://github.com/torvalds/linux/blob/v4.9/scripts/mod/modpost.c#L1978 から https://github.com/torvalds/linux/blob/ を使用して自動的に計算されます。 v4.9/scripts/mod/sumversion.c#L400
有効にするには、次のいずれかを行います:
- set
MODULE_VERSION
モジュールの CONFIG_MODULE_SRCVERSION_ALL
でコンパイル .srcversion
MODULE_VERSION
のないものを含むすべてのモジュールに対して生成されます set:modinfo srcversion:ソースからこれを生成するにはどうすればよいですか?
srcversion
ファイルは、上記のいずれかが成り立つ場合にのみ存在します。
次に、ビルドされた .ko
を確認できます insmodded のものと一致します:
modinfo mymod.ko
これは、独自のカーネル モジュールを開発し、マシン間でモジュールをコピーする場合に、非常に便利なサニティ チェックです。
THIS_MODULE
を使用してモジュール コード自体から
THIS_MODULE->version
を使用できます 、ここに例があります:Linux カーネル モジュール ドライバーでの THIS_MODULE の重要性は何ですか?