Метод выполнения
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.
version
version
устанавливается макросом MODULE_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
соответствует импортированному с:
modinfo mymod.ko
Это очень полезная проверка работоспособности, когда вы разрабатываете свои собственные модули ядра и копируете модули между компьютерами.
Изнутри самого кода модуля введите THIS_MODULE
Вы можете использовать THIS_MODULE->version
, вот пример: Какое значение THIS_MODULE в драйверах модулей ядра Linux?