GNU/Linux >> Linux の 問題 >  >> Linux

Linux –どのモジュールがカーネルを汚染しているかを判断する方法は?

特定のワイヤレスネットワークに接続すると、カーネルがパニックになり続けます。バグレポートを送信したいのですが、カーネルが汚染されているようです。 /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

および

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

4096ビットマスクの意味に関するドキュメントを見つけることができませんでしたが、G フラグは、外部GPLモジュールがカーネルにロードされることを意味します 。どのモジュールがカーネルを汚染しているのかを知るにはどうすればよいですか?

[Tt]aintを探しました /var/log/messagesにあります またはdmesg モジュールがロードされたときに対応するものは何も見つかりません。私のカーネルはFedora17の最新カーネルです:3.8.4-102.fc17.x86_64。

更新rts5139が原因である可能性があります モジュール。 lsmodに表示されます ただし、modinfo rts5139 ERROR: Module rts5139 not found. 以前のカーネル3.8.3-103.fc17.x86_64を起動すると、このモジュールはlsmodによってリストされません。 カーネルが汚染されていない(/proc/sys/kernel/taint は0です。

このモジュールをブラックリストに載せてみました

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

ただし、再起動してもカーネルが汚染されていると表示されます。

承認された回答:

標準のFedoraカーネルパッケージにこの汚染を引き起こすモジュールが含まれているとは思わないので、問題は、他にどのカーネルモジュールをインストールしたかということです。

一般的な候補は、グラフィックスドライバー(ほとんどの場合「プロプライエタリ」ビットを設定すると思いますが)とワイヤレスドライバーです。

lsmodに何かが見つかった場合 候補と思われる出力を実行してから、modinfo <module-name>を実行します。 出力にintree: Yが含まれているかどうかを確認します それがないモジュールは、あなたが見ている汚染を引き起こします。

更新rts5139 lsmodに表示されているモジュール ただし、システムに存在しないように見えるものは、おそらくinitrdにあり、メインファイルシステムがマウントされる前のブートプロセスの早い段階でそこからロードされています。

これは、更新されたブラックリストを使用してinitrdを再構築する必要があるため、ブラックリストが機能しない理由も説明しています。 dracutを使用してinitrdを再構築する とにかくモジュールが消えてしまいます。


Linux
  1. Linux – Linuxカーネルシステムコールの実装を見つける方法は?

  2. Linux – Linuxの汚染されたカーネル?

  3. Linux カーネルが使用するキャッシュを消去する方法

  1. コンパイルされたカーネルモジュールのバージョンを見つける方法は?

  2. Linux カーネルは __init 呼び出しの順序をどのように決定しますか?

  3. Linux でソケット接続のアップタイムを確認する方法

  1. Linux –カーネルモジュールを適切にリロードする方法は?

  2. Linux でディスクに書き込みを行っているプロセスを特定する方法

  3. 起動時にLinuxカーネルモジュールをロードするシーケンスは何ですか?それらにどのように優先順位が設定されていますか?