Módulo marcado (F) en / proc / modules

9

En mi sistema 3.10, algunos de los módulos enumerados en / proc / modules están marcados (F). Me gustaría encontrar la causa de esto (F). Estoy seguro de que los módulos no se cargaron a la fuerza y ​​se construyeron con el Kernel. ¿Podría, por favor, señalar qué código del núcleo crea los / proc / modules?

usb_storage 56610 0 - Live 0xffffffffa005d000 (F)

Si descargo y vuelvo a cargar este módulo, la (F) desaparece.

Stephan T.
fuente
Además del código (aún buscando ese bit), los siguientes mejores recursos que he encontrado hasta ahora son estos 2: unixhelp.ed.ac.uk/CGI/man-cgi?proc+5 & tldp.org/HOWTO/html_single/ Módulo-COMO . Esto también es algo útil: centos.org/docs/5/html/Deployment_Guide-en-US/…
slm
Gracias slm. Su tercer puntero, en la sección que hace referencia a / proc / modules explica la sexta columna, que es el desplazamiento de memoria. Dice que esta información es utilizada por los perfiladores: este es mi problema. El generador de perfiles se niega silenciosamente a funcionar cuando el módulo está marcado (F).
Stephan

Respuestas:

11

Las columnas en la salida de /proc/modulesson las siguientes.

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

NOTA: No encontré ninguna mención de lo que parece ser la séptima columna, pero la etiqueto como tal, ya que las descripciones de la sexta columna (ver más abajo) no cubren la información que se muestra allí.

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

  • La primera columna contiene el nombre del módulo.
  • La segunda columna se refiere al tamaño de la memoria del módulo, en bytes.
  • La tercera columna enumera cuántas instancias del módulo están cargadas actualmente. Un valor de cero representa un módulo descargado.
  • La cuarta columna indica si el módulo depende de que otro módulo esté presente para funcionar, y enumera esos otros módulos.
  • La quinta columna enumera en qué estado de carga se encuentra el módulo: Live, Loading o Unloading son los únicos valores posibles.
  • La sexta columna enumera el desplazamiento actual de la memoria del núcleo para el módulo cargado. Esta información puede ser útil para fines de depuración o para herramientas de creación de perfiles como oprofile.

Creo que la columna que está marcada con (F)(es decir, la séptima columna) proviene de aquí en este archivo - 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().
 */

Estos códigos son una representación de la máscara de bits que también está presente en la kernel.txtdocumentación de referencia.

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.

Referencias

slm
fuente