GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare la versione di un modulo del kernel compilato?

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


Linux
  1. Linux:come trovare le implementazioni delle chiamate di sistema del kernel Linux?

  2. Come trovare il modulo del kernel per un determinato dispositivo?

  3. Linux:come determinare quale modulo contamina il kernel?

  4. Come posso trovare la versione di Fedora che uso?

  5. Dove trovo la versione di un albero dei sorgenti del kernel Linux?

Come trovare la versione di Redhat Linux installata

Come controllare la versione del kernel in Linux

Come scoprire la versione del kernel Linux in esecuzione sul tuo PC

Trova il nome della distribuzione Linux, la versione e i dettagli del kernel

Come trovare la versione di openSUSE

Come trovare la versione di Ubuntu