Modul markiert mit (F) in / proc / modules

9

Auf meinem 3.10-System sind einige der in / proc / modules aufgeführten Module mit (F) gekennzeichnet. Ich möchte die Ursache dafür finden (F). Ich bin sicher, dass Module nicht zwangsweise geladen wurden und mit dem Kernel erstellt wurden. Könnten Sie bitte darauf hinweisen, welcher Kernel-Code die / proc / modules erstellt?

usb_storage 56610 0 - Live 0xffffffffa005d000 (F)

Wenn ich dieses Modul entlade und wieder lade, verschwindet das (F).

Stephan T.
quelle
Neben dem Code (der immer noch nach diesem Bit sucht) sind die nächstbesten Ressourcen, die ich bisher gefunden habe, die folgenden 2: unixhelp.ed.ac.uk/CGI/man-cgi?proc+5 & tldp.org/HOWTO/html_single/ Modul-HOWTO . Dies ist auch etwas nützlich: centos.org/docs/5/html/Deployment_Guide-en-US/…
slm
Danke slm. Ihr dritter Zeiger im Abschnitt, der sich auf / proc / modules bezieht, erklärt die sechste Spalte, bei der es sich um den Speicheroffset handelt. Es heißt, dass diese Informationen von Profilern verwendet werden - das ist mein Problem. Der Profiler weigert sich stillschweigend zu arbeiten, wenn das Modul markiert ist (F).
Stephan T.

Antworten:

11

Die Spalten in der Ausgabe von /proc/moduleslauten wie folgt.

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

HINWEIS: Ich habe keine Erwähnung der scheinbar siebten Spalte gefunden, beschrifte sie jedoch als solche, da die Beschreibungen für die sechste Spalte (siehe unten) nicht die Informationen enthalten, die dort angezeigt werden.

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

  • Die erste Spalte enthält den Namen des Moduls.
  • Die zweite Spalte bezieht sich auf die Speichergröße des Moduls in Bytes.
  • In der dritten Spalte wird aufgeführt, wie viele Instanzen des Moduls derzeit geladen sind. Ein Wert von Null steht für ein entladenes Modul.
  • In der vierten Spalte wird angegeben, ob das Modul von einem anderen Modul abhängt, um zu funktionieren, und diese anderen Module werden aufgelistet.
  • In der fünften Spalte wird aufgeführt, in welchem ​​Ladezustand sich das Modul befindet: Live, Loading oder Unloading sind die einzig möglichen Werte.
  • In der sechsten Spalte wird der aktuelle Kernel-Speicheroffset für das geladene Modul aufgeführt. Diese Informationen können für Debugging-Zwecke oder für Profiling-Tools wie oprofile hilfreich sein.

Ich glaube, die Spalte, die mit (F)(dh die 7. Spalte) markiert ist, stammt von hier in dieser Datei - 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().
 */

Diese Codes sind eine Darstellung für die Bitmaske, die auch in der kernel.txtReferenzdokumentation enthalten ist.

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.

Verweise

slm
quelle