GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo encontrar la versión de un módulo kernel compilado?

$ 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:

Método de tiempo de ejecución

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

Probado con esta configuración en el kernel 4.9.6.

/sys/modules/module_version/version

version está establecido por el MODULE_VERSION macro.

El archivo no existe si el MODULE_VERSION la macro no se usa en el módulo.

/sys/module/module_version/srcversion

srcversion es un hash MD4 del código fuente utilizado para compilar el módulo del kernel. Se calcula automáticamente en el momento de la compilación desde https://github.com/torvalds/linux/blob/v4.9/scripts/mod/modpost.c#L1978 usando https://github.com/torvalds/linux/blob/ v4.9/scripts/mod/sumversion.c#L400

Para habilitarlo, ya sea:

  • establecer MODULE_VERSION para el módulo
  • compilar con CONFIG_MODULE_SRCVERSION_ALL . srcversion luego se genera para todos los módulos, incluidos aquellos sin MODULE_VERSION set:modinfo srcversion:¿Cómo genero esto desde mi fuente?

El srcversion el archivo solo está presente cuando se cumple uno de los anteriores.

A continuación, puede comprobar que el .ko integrado coincide con el insmodded con:

modinfo mymod.ko

Esta es una verificación de cordura muy útil cuando está desarrollando sus propios módulos de kernel y copiando módulos entre máquinas.

Desde dentro del código del módulo mismo con THIS_MODULE

Puedes usar THIS_MODULE->version , aquí hay un ejemplo:¿Cuál es el significado de ESTE_MÓDULO en los controladores del módulo del kernel de Linux?


Linux
  1. Linux:¿cómo encontrar las implementaciones de las llamadas al sistema del kernel de Linux?

  2. ¿Cómo encontrar el módulo del kernel para un dispositivo dado?

  3. Linux:¿cómo determinar qué módulo contamina el kernel?

  4. ¿Dónde encuentro la versión de un árbol de fuentes del kernel de Linux?

  5. ¿Cómo codificar un módulo del kernel de Linux?

Cómo encontrar la versión de Redhat Linux instalada

Cómo verificar la versión del kernel en Linux

Cómo averiguar la versión del kernel de Linux que se ejecuta en su PC

Encuentre el nombre de distribución de Linux, la versión y los detalles del kernel

Cómo encontrar la versión de openSUSE

Cómo encontrar la versión de Ubuntu