GNU/Linux >> Znalost Linux >  >> Linux

Linux – Jak zjistit, který modul poškozuje jádro?

Moje jádro neustále panikaří, když je připojeno k určité bezdrátové síti. Rád bych poslal hlášení o chybě, ale moje jádro je zjevně znečištěné. Z /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

a

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

Nepodařilo se mi najít dokumentaci k tomu, co znamená bitová maska ​​4096, ale G příznak znamená, že do jádra je nahrán externí modul GPL . Jak zjistím, který modul kazí jádro?

Hádal jsem po [Tt]aint v /var/log/messages nebo dmesg a nenajdete nic, co by odpovídalo tomu, kdy je modul načten. Moje jádro je nejnovější jádro z Fedory 17:3.8.4-102.fc17.x86_64.

AKTUALIZACE :Může to být způsobeno rts5139 modul. Zobrazuje se v lsmod ale modinfo rts5139 vytváří ERROR: Module rts5139 not found. Při zavádění předchozího jádra 3.8.3-103.fc17.x86_64 není tento modul uveden v seznamu lsmod a jádro není poskvrněné (/proc/sys/kernel/taint je 0).

Zkusil jsem přidat tento modul na černou listinu

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

ale restartování stále ukazuje jádro jako poskvrněné.

Přijatá odpověď:

Nevěřím, že standardní balíček jádra Fedory bude obsahovat nějaké moduly, které by spustily toto pošpinění, takže otázka zní, jaké další moduly jádra jste nainstalovali?

Běžnými kandidáty by byly grafické ovladače (i když si myslím, že většinou nastaví „proprietární“ bit) a bezdrátové ovladače.

Pokud můžete něco najít v lsmod výstup, o kterém si myslíte, že by mohl být kandidátem, pak spusťte modinfo <module-name> a zjistěte, zda výstup obsahuje intree: Y protože jakýkoli modul bez toho spustí poskvrnu, kterou vidíte.

AKTUALIZACE :rts5139 modul, který vidíte v lsmod ale zdá se, že ve vašem systému není, je pravděpodobně v initrd a načítá se odtud brzy v procesu zavádění, než je připojen hlavní souborový systém.

To také vysvětluje, proč blacklist nebude fungovat, protože byste museli znovu sestavit initrd s aktualizovanou černou listinou. Znovu sestavení initrd pomocí dracut způsobí, že modul stejně zmizí.


Linux
  1. Linux – Jak najít implementace systémových volání jádra Linuxu?

  2. Jak zjistit verzi kompilovaného modulu jádra?

  3. Jaká je sekvence načítání modulu linuxového jádra při spuštění? Jak je jim nastavena priorita?

  1. Linux – poskvrněné jádro v Linuxu?

  2. Jak vyčistit mezipaměti používané linuxovým jádrem

  3. Jak linuxové jádro určuje pořadí volání __init?

  1. Linux – Jak správně znovu načíst modul jádra?

  2. Jak kódovat modul jádra Linuxu?

  3. Jak určit dobu připojení soketu v systému Linux