Module marqué (F) dans / proc / modules

9

Sur mon système 3.10, certains des modules répertoriés dans / proc / modules sont marqués (F). J'aimerais trouver la cause de ceci (F). Je suis sûr que les modules n'ont pas été chargés de force et ont été construits avec le noyau. Pourriez-vous indiquer le code du noyau qui crée les modules / proc /?

usb_storage 56610 0 - Live 0xffffffffa005d000 (F)

Si je décharge et recharge ce module, le (F) disparaît.

Stephan T.
la source
Outre le code (toujours à la recherche de ce bit), les deux meilleures ressources que j'ai trouvées jusqu'à présent sont les suivantes: unixhelp.ed.ac.uk/CGI/man-cgi?proc+5 & tldp.org/HOWTO/html_single/ Module-HOWTO . Ceci est également quelque peu utile: centos.org/docs/5/html/Deployment_Guide-en-US/…
slm
Merci slm. Votre troisième pointeur, dans la section faisant référence à / proc / modules, explique la sixième colonne qui est l'offset mémoire. Il dit que ces informations sont utilisées par les profileurs - c'est mon problème. Le profileur refuse silencieusement de travailler lorsque le module est marqué (F).
Stephan T.28

Réponses:

11

Les colonnes de la sortie de /proc/modulessont les suivantes.

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

REMARQUE: Je n'ai trouvé aucune mention de ce qui semble être la 7e colonne, mais je l'étiquète comme tel car les descriptions de la 6e colonne (voir ci-dessous) ne couvrent pas les informations qui y sont affichées.

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

  • La première colonne contient le nom du module.
  • La deuxième colonne fait référence à la taille de la mémoire du module, en octets.
  • La troisième colonne répertorie le nombre d'instances du module actuellement chargées. Une valeur de zéro représente un module déchargé.
  • La quatrième colonne indique si le module dépend de la présence d'un autre module pour fonctionner et répertorie ces autres modules.
  • La cinquième colonne répertorie l'état de chargement du module: Live, Loading ou Unloading sont les seules valeurs possibles.
  • La sixième colonne répertorie le décalage de mémoire du noyau actuel pour le module chargé. Ces informations peuvent être utiles à des fins de débogage ou pour le profilage d'outils tels que oprofile.

Je crois que la colonne qui est marquée avec (F)(c'est-à-dire la 7e colonne) vient d'ici dans ce fichier - 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().
 */

Ces codes sont également une représentation du masque binaire présent dans la kernel.txtdocumentation de référence.

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.

Références

slm
la source