GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana menemukan versi modul kernel yang dikompilasi?

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

Metode waktu proses

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

Diuji dengan penyiapan ini pada kernel 4.9.6.

/sys/modules/module_version/version

version diatur oleh MODULE_VERSION makro.

File tidak ada jika MODULE_VERSION makro tidak digunakan dalam modul.

/sys/module/module_version/srcversion

srcversion adalah hash MD4 dari kode sumber yang digunakan untuk mengkompilasi modul kernel. Itu dihitung secara otomatis pada waktu pembuatan dari https://github.com/torvalds/linux/blob/v4.9/scripts/mod/modpost.c#L1978 menggunakan https://github.com/torvalds/linux/blob/ v4.9/scripts/mod/sumversion.c#L400

Untuk mengaktifkannya, baik:

  • setel MODULE_VERSION untuk modul
  • kompilasi dengan CONFIG_MODULE_SRCVERSION_ALL . srcversion kemudian dihasilkan untuk semua modul, termasuk yang tanpa MODULE_VERSION set:modinfo srcversion:Bagaimana cara menghasilkan ini dari sumber saya?

srcversion file hanya ada jika salah satu dari yang di atas berlaku.

Anda kemudian dapat memeriksa bahwa .ko telah dibuat cocok dengan yang insmodded dengan:

modinfo mymod.ko

Ini adalah pemeriksaan kewarasan yang sangat berguna saat Anda mengembangkan modul kernel Anda sendiri dan menyalin modul antar mesin.

Dari dalam kode modul itu sendiri dengan THIS_MODULE

Anda dapat menggunakan THIS_MODULE->version , ini contohnya:Apa pentingnya THIS_MODULE dalam driver modul kernel Linux?


Linux
  1. Linux – Bagaimana Menemukan Implementasi Panggilan Sistem Kernel Linux?

  2. Linux – Bagaimana Cara Menemukan Driver (modul) yang Berhubungan Dengan Perangkat Di Linux?

  3. Cara Menemukan Versi OS Instalasi Asli di CentOS/RHEL

  1. Bagaimana cara menemukan versi Fedora yang saya gunakan?

  2. Di mana saya menemukan versi pohon sumber kernel Linux?

  3. Bagaimana cara membuat kode modul kernel Linux?

  1. Bagaimana cara menambahkan fungsi polling ke kode modul kernel?

  2. Bagaimana cara men-debug modul kernel tempat pointer NULL muncul?

  3. Bagaimana menemukan driver (modul) yang terkait dengan perangkat di Linux?