$ 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:
Metodo di runtime
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
Testato con questa configurazione sul kernel 4.9.6.
/sys/modules/module_version/version
version
è impostato dal MODULE_VERSION
macro.
Il file non esiste se MODULE_VERSION
macro non è utilizzata nel modulo.
/sys/module/module_version/srcversion
srcversion
è un hash MD4 del codice sorgente utilizzato per compilare il modulo del kernel. Viene calcolato automaticamente al momento della compilazione da https://github.com/torvalds/linux/blob/v4.9/scripts/mod/modpost.c#L1978 utilizzando https://github.com/torvalds/linux/blob/ v4.9/scripts/mod/sumversion.c#L400
Per abilitarlo, puoi:
- imposta
MODULE_VERSION
per il modulo - compilare con
CONFIG_MODULE_SRCVERSION_ALL
.srcversion
quindi viene generato per tutti i moduli, inclusi quelli senzaMODULE_VERSION
set:modinfo srcversion:Come faccio a generarlo dalla mia fonte?
Il srcversion
file è presente solo quando se uno dei precedenti vale.
Puoi quindi verificare che il .ko
compilato corrisponde a quello insmodded con:
modinfo mymod.ko
Questo è un controllo di integrità molto utile quando si sviluppano i propri moduli del kernel e si copiano i moduli tra le macchine.
Dall'interno del codice del modulo stesso con THIS_MODULE
Puoi usare THIS_MODULE->version
, ecco un esempio:Qual è il significato di THIS_MODULE nei driver dei moduli del kernel Linux?