$ 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:
Método de tiempo de ejecución
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
Probado con esta configuración en el kernel 4.9.6.
/sys/modules/module_version/version
version
está establecido por el MODULE_VERSION
macro.
El archivo no existe si el MODULE_VERSION
la macro no se usa en el módulo.
/sys/module/module_version/srcversion
srcversion
es un hash MD4 del código fuente utilizado para compilar el módulo del kernel. Se calcula automáticamente en el momento de la compilación desde https://github.com/torvalds/linux/blob/v4.9/scripts/mod/modpost.c#L1978 usando https://github.com/torvalds/linux/blob/ v4.9/scripts/mod/sumversion.c#L400
Para habilitarlo, ya sea:
- establecer
MODULE_VERSION
para el módulo - compilar con
CONFIG_MODULE_SRCVERSION_ALL
.srcversion
luego se genera para todos los módulos, incluidos aquellos sinMODULE_VERSION
set:modinfo srcversion:¿Cómo genero esto desde mi fuente?
El srcversion
el archivo solo está presente cuando se cumple uno de los anteriores.
A continuación, puede comprobar que el .ko
integrado coincide con el insmodded con:
modinfo mymod.ko
Esta es una verificación de cordura muy útil cuando está desarrollando sus propios módulos de kernel y copiando módulos entre máquinas.
Desde dentro del código del módulo mismo con THIS_MODULE
Puedes usar THIS_MODULE->version
, aquí hay un ejemplo:¿Cuál es el significado de ESTE_MÓDULO en los controladores del módulo del kernel de Linux?