$ 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:
Běhová metoda
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
Testováno s tímto nastavením na jádře 4.9.6.
/sys/modules/module_version/version
version
se nastavuje pomocí MODULE_VERSION
makro.
Pokud je MODULE_VERSION
, soubor neexistuje makro se v modulu nepoužívá.
/sys/module/module_version/srcversion
srcversion
je MD4 hash zdrojového kódu použitého ke kompilaci modulu jádra. Vypočítává se automaticky v době sestavení z https://github.com/torvalds/linux/blob/v4.9/scripts/mod/modpost.c#L1978 pomocí https://github.com/torvalds/linux/blob/ v4.9/scripts/mod/sumversion.c#L400
Chcete-li jej povolit, postupujte takto:
- nastavit
MODULE_VERSION
pro modul - kompilujte s
CONFIG_MODULE_SRCVERSION_ALL
.srcversion
pak se vygeneruje pro všechny moduly, včetně těch bezMODULE_VERSION
set:modinfo srcversion:Jak to vygeneruji ze svého zdroje?
srcversion
soubor je přítomen pouze tehdy, pokud platí jedno z výše uvedených.
Poté můžete zkontrolovat, zda je vestavěný .ko
odpovídá insmodded s:
modinfo mymod.ko
Toto je velmi užitečná kontrola zdravého rozumu, když vyvíjíte vlastní moduly jádra a kopírujete moduly mezi počítači.
Zevnitř modulu samotný kód s THIS_MODULE
Můžete použít THIS_MODULE->version
, zde je příklad:Jaký význam má THIS_MODULE v ovladačích modulu jádra Linuxu?