GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit verzi kompilovaného modulu jádra?

$ 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 bez MODULE_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?


Linux
  1. Jak najít původní verzi instalačního OS v CentOS/RHEL

  2. Kde najdu verzi zdrojového stromu linuxového jádra?

  3. Jak zkontrolovat HZ v terminálu?

  1. Linux – Jak najít implementace systémových volání jádra Linuxu?

  2. Jak najít modul jádra pro dané zařízení?

  3. Jak přidat funkci dotazování do kódu modulu jádra?

  1. Linux – Jak zjistit, který modul poškozuje jádro?

  2. Linux – Jak najít ovladač (modul) spojený se zařízením v Linuxu?

  3. Jak mohu najít verzi Fedory, kterou používám?