Modulo contrassegnato (F) in / proc / modules


9

Sul mio sistema 3.10 alcuni dei moduli elencati in / proc / module sono contrassegnati (F). Mi piacerebbe trovare la causa di questo (F). Sono sicuro che i moduli non sono stati caricati forzatamente e sono stati creati con il kernel. Potresti, per favore, indicare quale codice del kernel crea i moduli / proc /?

usb_storage 56610 0 - Live 0xffffffffa005d000 (F)

Se scarico e ricarico nuovamente questo modulo, la (F) scompare.


Oltre al codice (ancora alla ricerca di quel bit) le prossime migliori risorse che ho trovato finora sono queste 2: unixhelp.ed.ac.uk/CGI/man-cgi?proc+5 & tldp.org/HOWTO/html_single/ Modulo-HOWTO . Anche questo è un po 'utile: centos.org/docs/5/html/Deployment_Guide-en-US/…
slm

Grazie slm. Il tuo terzo puntatore, nella sezione che si riferisce a / proc / modules, spiega la sesta colonna che è l'offset della memoria. Dice che queste informazioni sono utilizzate dai profiler: questo è il mio problema. Il profiler si rifiuta silenziosamente di funzionare quando il modulo è contrassegnato (F).
Stephan T.,

Risposte:


11

Le colonne nell'output di /proc/modulessono le seguenti.

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

NOTA: non ho trovato alcuna menzione di quella che sembra essere la settima colonna, ma la sto etichettando come tale poiché le descrizioni per la sesta colonna (vedi sotto) non coprono le informazioni che vengono visualizzate lì.

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

  • La prima colonna contiene il nome del modulo.
  • La seconda colonna si riferisce alla dimensione della memoria del modulo, in byte.
  • La terza colonna elenca quante istanze del modulo sono attualmente caricate. Un valore pari a zero rappresenta un modulo senza carico.
  • La quarta colonna indica se il modulo dipende da un altro modulo per essere presente per funzionare, ed elenca quegli altri moduli.
  • La quinta colonna elenca lo stato di caricamento del modulo: Live, Loading o Unloading sono gli unici valori possibili.
  • La sesta colonna elenca l'offset di memoria del kernel corrente per il modulo caricato. Queste informazioni possono essere utili per scopi di debug o per strumenti di profilazione come oprofile.

Credo che la colonna contrassegnata con (F)(ovvero la settima colonna) provenga da qui in questo file - 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().
 */

Questi codici sono una rappresentazione per la maschera di bit presente anche nella kernel.txtdocumentazione di riferimento.

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.

Riferimenti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.