$ 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éthode d'exécution
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
Testé avec cette configuration sur le noyau 4.9.6.
/sys/modules/module_version/version
version
est défini par le MODULE_VERSION
macro.
Le fichier n'existe pas si le MODULE_VERSION
la macro n'est pas utilisée dans le module.
/sys/module/module_version/srcversion
srcversion
est un hachage MD4 du code source utilisé pour compiler le module du noyau. Il est calculé automatiquement au moment de la construction à partir de https://github.com/torvalds/linux/blob/v4.9/scripts/mod/modpost.c#L1978 en utilisant https://github.com/torvalds/linux/blob/ v4.9/scripts/mod/sumversion.c#L400
Pour l'activer, soit :
- définir
MODULE_VERSION
pour le module - compiler avec
CONFIG_MODULE_SRCVERSION_ALL
.srcversion
est ensuite généré pour tous les modules, y compris ceux sansMODULE_VERSION
set :modinfo srcversion :comment puis-je générer ceci à partir de ma source ?
Le srcversion
le fichier n'est présent que si l'une des conditions ci-dessus est vérifiée.
Vous pouvez alors vérifier que le .ko
construit correspond à celui insmodded avec :
modinfo mymod.ko
Il s'agit d'une vérification de cohérence très utile lorsque vous développez vos propres modules de noyau et que vous copiez des modules entre des machines.
Depuis l'intérieur du module, codez-le avec THIS_MODULE
Vous pouvez utiliser THIS_MODULE->version
, voici un exemple :Quelle est la signification de THIS_MODULE dans les pilotes de module du noyau Linux ?