GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comment déterminer quel module corrompt le noyau ?

Mon noyau continue de paniquer lorsqu'il est connecté à un certain réseau sans fil. J'aimerais envoyer un rapport de bogue, mais mon noyau est apparemment entaché. Depuis /var/log/messages :

Apr 17 21:28:22 Eiger kernel: [13330.442453] Pid: 4095, comm: kworker/u:1 Tainted: G           O 3.8.4-102.fc17.x86_64 #1

et

[[email protected] ~]# cat /proc/sys/kernel/tainted 
4096

Je n'ai pas pu trouver de documentation sur la signification du masque de bits 4096, mais le G flag signifie qu'un module GPL externe est chargé dans le noyau . Comment savoir quel module corrompt le noyau ?

J'ai cherché [Tt]aint dans /var/log/messages ou dmesg et ne trouve rien correspondant au moment où un module est chargé. Mon noyau est le dernier noyau de Fedora 17 :3.8.4-102.fc17.x86_64.

MISE À JOUR :Cela peut être dû au rts5139 module. Il apparaît dans lsmod mais modinfo rts5139 produit ERROR: Module rts5139 not found. Lors du démarrage du noyau précédent, 3.8.3-103.fc17.x86_64, ce module n'est pas répertorié par lsmod et le noyau n'est pas entaché (/proc/sys/kernel/taint est 0).

J'ai essayé de mettre ce module sur liste noire

echo 'blacklist rts5139' >> /etc/modprobe.d/blacklist.conf

mais le redémarrage montre toujours que le noyau est entaché.

Réponse acceptée :

Eh bien, je ne crois pas qu'un paquet standard du noyau Fedora inclura des modules qui déclencheraient cette souillure, donc la question est, quels autres modules du noyau avez-vous installés ?

Les candidats courants seraient les pilotes graphiques (bien que je pense que ceux-ci définiront principalement le bit "propriétaire") et les pilotes sans fil.

Si vous pouvez trouver quelque chose dans le lsmod sortie que vous pensez être un candidat, puis exécutez modinfo <module-name> et voir si la sortie inclut intree: Y comme tout module sans cela déclenchera la souillure que vous voyez.

MISE À JOUR :Le rts5139 module que vous voyez dans lsmod mais qui ne semble pas être sur votre système est probablement dans l'initrd et est chargé à partir de là au début du processus de démarrage avant que le système de fichiers principal ne soit monté.

Cela explique également pourquoi la liste noire ne fonctionnera pas car vous devrez reconstruire l'initrd avec la liste noire mise à jour. Reconstruire l'initrd avec dracut entraînera la disparition du module de toute façon.


Linux
  1. Linux - Comment trouver les implémentations des appels système du noyau Linux ?

  2. Comment déterminer quel processus écrit sur le disque sous Linux

  3. Comment nettoyer les caches utilisés par le noyau Linux

  4. Comment coder un module du noyau Linux ?

  5. Comment déterminer le temps de connexion du socket sous Linux

Comment utiliser la commande Modprobe sous Linux

Comment charger et décharger les modules du noyau sous Linux

Comment vérifier la version du noyau sous Linux

Comment mettre à niveau le noyau Linux sur CentOS 7

Comment installer le dernier noyau Linux sur CentOS 7

Comment utiliser la commande which sous Linux