GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come determinare quale modulo contamina il kernel?

Il mio kernel continua a farsi prendere dal panico quando è connesso a una determinata rete wireless. Vorrei inviare una segnalazione di bug ma il mio kernel è apparentemente contaminato. Da /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

e

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

Non sono stato in grado di trovare la documentazione per ciò che significa la maschera di bit 4096, ma il G flag significa che un modulo GPL esterno è caricato nel kernel . Come faccio a scoprire quale modulo sta contaminando il kernel?

Ho cercato [Tt]aint in /var/log/messages o dmesg e non trova nulla corrispondente a quando un modulo viene caricato. Il mio kernel è l'ultimo kernel di Fedora 17:3.8.4-102.fc17.x86_64.

AGGIORNAMENTO :Potrebbe essere dovuto a rts5139 modulo. Viene visualizzato in lsmod ma modinfo rts5139 produce ERROR: Module rts5139 not found. Quando si avvia il kernel precedente, 3.8.3-103.fc17.x86_64, questo modulo non è elencato da lsmod e il kernel non è contaminato (/proc/sys/kernel/taint è 0).

Ho provato a inserire questo modulo nella lista nera

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

ma il riavvio mostra ancora il kernel come contaminato.

Risposta accettata:

Bene, non credo che un pacchetto del kernel Fedora standard includerà moduli che attiverebbero questa contaminazione, quindi la domanda è:quali altri moduli del kernel hai installato?

I candidati più comuni sarebbero i driver grafici (anche se penso che imposteranno principalmente il bit "proprietario") e i driver wireless.

Se riesci a trovare qualcosa in lsmod output che ritieni possa essere un candidato, quindi esegui modinfo <module-name> e verifica se l'output include intree: Y come qualsiasi modulo senza quello attiverà la contaminazione che stai vedendo.

AGGIORNAMENTO :Il rts5139 modulo che stai vedendo in lsmod ma che non sembra essere sul tuo sistema è probabilmente in initrd e viene caricato da lì all'inizio del processo di avvio prima che il filesystem principale venga montato.

Questo spiega anche perché la blacklist non funzionerà poiché dovresti ricostruire l'initrd con la blacklist aggiornata. Ricostruire l'initrd con dracut tuttavia, il modulo andrà via comunque.


Linux
  1. Linux:come trovare le implementazioni delle chiamate di sistema del kernel Linux?

  2. Linux:come ricaricare correttamente un modulo del kernel?

  3. Come pulire le cache utilizzate dal kernel Linux

  4. Come codificare un modulo del kernel Linux?

  5. Qual è la sequenza che carica il modulo del kernel Linux all'avvio? Qual è la priorità per loro?

Come utilizzare il comando Modprobe in Linux

Come caricare e scaricare i moduli del kernel in Linux

Come controllare la versione del kernel in Linux

Come aggiornare il kernel Linux su CentOS 7

Come installare l'ultimo kernel Linux su CentOS 7

Come utilizzare il comando which in Linux