GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie finde ich die Version eines kompilierten Kernelmoduls?

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

Laufzeitmethode

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

Getestet mit diesem Setup auf Kernel 4.9.6.

/sys/modules/module_version/version

version wird durch die MODULE_VERSION gesetzt Makro.

Die Datei existiert nicht, wenn MODULE_VERSION Makro wird im Modul nicht verwendet.

/sys/module/module_version/srcversion

srcversion ist ein MD4-Hash des Quellcodes, der zum Kompilieren des Kernelmoduls verwendet wird. Es wird automatisch zur Erstellungszeit von https://github.com/torvalds/linux/blob/v4.9/scripts/mod/modpost.c#L1978 unter Verwendung von https://github.com/torvalds/linux/blob/ berechnet. v4.9/scripts/mod/sumversion.c#L400

Um es zu aktivieren, entweder:

  • Setzen Sie MODULE_VERSION für das Modul
  • mit CONFIG_MODULE_SRCVERSION_ALL kompilieren . srcversion wird dann für alle Module generiert, auch für die ohne MODULE_VERSION set:modinfo srcversion:Wie generiere ich das aus meiner Quelle?

Die srcversion Datei ist nur vorhanden, wenn einer der obigen Punkte zutrifft.

Sie können dann überprüfen, ob der eingebaute .ko stimmt mit dem insmodded überein mit:

modinfo mymod.ko

Dies ist eine sehr nützliche Plausibilitätsprüfung, wenn Sie Ihre eigenen Kernel-Module entwickeln und Module zwischen Computern kopieren.

Vom Inneren des Modulcodes selbst mit THIS_MODULE

Sie können THIS_MODULE->version verwenden , hier ist ein Beispiel:Welche Bedeutung hat THIS_MODULE in Linux-Kernel-Modultreibern?


Linux
  1. Linux – Wie finde ich die Implementierungen von Linux-Kernel-Systemaufrufen?

  2. Linux – Wie finde ich den Treiber (Modul), der mit einem Gerät unter Linux verbunden ist?

  3. So finden Sie die ursprüngliche Version des Installations-Betriebssystems in CentOS/RHEL

  4. Wo finde ich die Version eines Linux-Kernel-Quellbaums?

  5. Wie füge ich dem Kernel-Modulcode eine Abfragefunktion hinzu?

So finden Sie die installierte Version von Redhat Linux

So überprüfen Sie die Kernel-Version in Linux

So finden Sie heraus, welche Version des Linux-Kernels auf Ihrem PC läuft

Finden Sie den Namen, die Version und die Kernel-Details der Linux-Distribution

So finden Sie die openSUSE-Version

So finden Sie die Ubuntu-Version