2011-01-29 117 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 

这是当你正在开发自己的内核模块和机器之间的复制模块一个非常有用的完整性检查。