GNU/Linux >> Linux の 問題 >  >> Linux

コンパイルされたカーネルモジュールのバージョンを見つける方法は?

$ 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 の重要性は何ですか?


Linux
  1. 特定のデバイスのカーネルモジュールを見つける方法は?

  2. Linux –どのモジュールがカーネルを汚染しているかを判断する方法は?

  3. Linux – Linux上のデバイスに関連付けられているドライバー(モジュール)を見つける方法は?

  1. Linux カーネル ソース ツリーのバージョンはどこにありますか?

  2. ターミナルでHZを確認するには?

  3. Linux 上のデバイスに関連付けられているドライバー (モジュール) を見つける方法は?

  1. Linux – Linuxカーネルシステムコールの実装を見つける方法は?

  2. CentOS/RHEL で元のインストール OS バージョンを確認する方法

  3. 使用している Fedora のバージョンを確認するにはどうすればよいですか?