Modul bertanda (F) di / proc / modules

9

Pada sistem 3.10 saya, beberapa modul yang terdaftar di / proc / modules ditandai (F). Saya ingin mencari penyebabnya (P). Saya yakin modul tidak dimuat paksa dan dibangun dengan Kernel. Bisakah Anda, tunjukkan kode kernel apa yang membuat / proc / modules?

usb_storage 56610 0 - Live 0xffffffffa005d000 (F)

Jika saya bongkar dan muat kembali modul ini, (F) hilang.

Stephan T.
sumber
Selain kode (masih mencari sedikit) sumber daya terbaik berikutnya yang saya temukan sejauh ini adalah 2: unixhelp.ed.ac.uk/CGI/man-cgi?proc+5 & tldp.org/HOWTO/html_single/ Modul-HOWTO . Ini agak berguna juga: centos.org/docs/5/html/Deployment_Guide-en-US/…
slm
Terima kasih slm. Pointer ketiga Anda, di bagian merujuk ke / proc / modules menjelaskan kolom keenam yang merupakan memori offset. Dikatakan info ini digunakan oleh profiler - ini masalah saya. Profiler diam-diam menolak untuk bekerja ketika modul ditandai (F).
Stephan T.

Jawaban:

11

Kolom di output dari /proc/modulesadalah sebagai berikut.

usb_storage 56610 0    -   Live 0xffffffffa005d000 (F)
  (1)        (2) (3)  (4)  (5)         (6)         (7)

CATATAN: Saya tidak menemukan penyebutan apa yang tampak sebagai kolom ke-7, tetapi saya memberi label karena deskripsi untuk kolom ke-6 (lihat di bawah) tidak mencakup informasi yang ditampilkan di sana.

excerpt - http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-proc-topfiles.html

  • Kolom pertama berisi nama modul.
  • Kolom kedua mengacu pada ukuran memori modul, dalam byte.
  • Kolom ketiga berisi daftar berapa banyak modul yang dimuat saat ini. Nilai nol mewakili modul yang tidak diturunkan.
  • Kolom keempat menyatakan jika modul bergantung pada modul lain untuk hadir agar berfungsi, dan daftar modul-modul lainnya.
  • Kolom kelima berisi daftar keadaan muatan modul: Live, Loading, atau Unloading adalah satu-satunya nilai yang mungkin.
  • Kolom keenam berisi offset memori kernel saat ini untuk modul yang dimuat. Informasi ini dapat berguna untuk keperluan debugging, atau untuk alat profil seperti oprofile.

Saya percaya kolom yang ditandai dengan (F)(yaitu kolom 7) berasal dari sini di file ini - panic.c.

/**
 *  print_tainted - return a string to represent the kernel taint state.
 *
 *  'P' - Proprietary module has been loaded.
 *  'F' - Module has been forcibly loaded.
 *  'S' - SMP with CPUs not designed for SMP.
 *  'R' - User forced a module unload.
 *  'M' - System experienced a machine check exception.
 *  'B' - System has hit bad_page.
 *  'U' - Userspace-defined naughtiness.
 *  'D' - Kernel has oopsed before
 *  'A' - ACPI table overridden.
 *  'W' - Taint on warning.
 *  'C' - modules from drivers/staging are loaded.
 *  'I' - Working around severe firmware bug.
 *  'O' - Out-of-tree module has been loaded.
 *  'E' - Unsigned module has been loaded.
 *
 *  The string is overwritten by the next call to print_tainted().
 */

Kode-kode ini adalah representasi untuk bitmask yang ada dalam kernel.txtdokumentasi referensi juga.

tainted:

 Non-zero if the kernel has been tainted.  Numeric values, which
 can be ORed together:

    1 - A module with a non-GPL license has been loaded, this
        includes modules with no license.
        Set by modutils >= 2.4.9 and module-init-tools.
    2 - A module was force loaded by insmod -f.
        Set by modutils >= 2.4.9 and module-init-tools.
    4 - Unsafe SMP processors: SMP with CPUs not designed for SMP.
    8 - A module was forcibly unloaded from the system by rmmod -f.
   16 - A hardware machine check error occurred on the system.
   32 - A bad page was discovered on the system.
   64 - The user has asked that the system be marked "tainted".  This
        could be because they are running software that directly modifies
        the hardware, or for other reasons.
  128 - The system has died.
  256 - The ACPI DSDT has been overridden with one supplied by the user
         instead of using the one provided by the hardware.
  512 - A kernel warning has occurred.
 1024 - A module from drivers/staging was loaded.
 2048 - The system is working around a severe firmware bug.
 4096 - An out-of-tree module has been loaded.
 8192 - An unsigned module has been loaded in a kernel supporting module
        signature.

Referensi

slm
sumber