2011-01-29 118 views

回答

8
$ 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: 
+1

雖然這個答案解決了我的問題,但我相信vermagic值反映了模塊編譯的內核版本,而不是模塊的版本。爲了測試這個,我嘗試了「modprobe nvidia」,因爲nvidia不包含在內核中,所以必須有不同的版本號。 「modprobe nvidia」返回了vermagic值的內核版本。 – 2011-01-29 22:56:40

1

運行方法

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測試與this setup

version

versionMODULE_VERSION給出。如果沒有給出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

要啓用它計算,或者:

srcversion給出當僅存在。

然後,您可以檢查內置.ko匹配insmodded一個具有:

modinfo mymod.ko 

這是當你正在開發自己的內核模塊和機器之間的複製模塊一個非常有用的完整性檢查。