汚染されたカーネル
This document (3582750) is provided subject to the disclaimer at the end of this document.
環境
SUSE Linux Enterprise Desktop
SUSE Linux Enterprise Server
問題の状況
Linuxカーネルが「汚染される」とは、どういう意味ですか? これは、Novell Technical Servicesのサポートにどのように影響しますか?
解決策
概要: Linuxカーネルの汚染のメカニズム
Linuxカーネルは、カーネルエラーメッセージに含まれた「汚染状態」を保持します。汚染状態は、カーネルのエラーまたはハングをトラブルシュートできるかどうかに影響する何かが実行中のカーネルに発生したかどうかを、カーネルソースコードの分析によって示す指標です。一部の汚染情報は、エラーメッセージとしてカーネルから提供された情報が信用できるものかかどうかに関連しています。
たとえば、MCE(Machine Check Exception: マシンチェック例外)が発生すると、汚染状態が設定され、ハードウェア関係の問題が発生したことが示されます。
いったん実行中のカーネルの汚染状態が設定されると、その設定を解除するには、システムをシャットダウンして再起動することによりカーネルを再ロードするしかありません。
汚染フラグ
カーネルの汚染状態は、カーネルが汚染されているかどうかを示すだけでなく、カーネルが汚染状態としてマークされる原因となったイベントのタイプも示します。この情報は、カーネルエラーメッセージに含まれた「Tainted:」に続く文字列内の1文字フラグとして符号化されます。
- P: プロプライエタリ(Proprietary)ライセンスを持つモジュール(つまり、GNU GPL(General Public License)や互換ライセンスが供与されていないモジュール)がロードされました。これは、このモジュールのソースコードをLinuxカーネルの開発者やNovellの開発者が利用できないことを意味する可能性があります。
- G: 「P」の反対。カーネルは汚染されていますが(別のフラグで示される理由により)、カーネルにロードされたすべてのモジュールには、GPLまたはGPLと互換性のあるライセンスが供与されています。
- F: モジュールがinsmodまたはmodprobeの強制(Force)オプション「-f」を使用してロードされ、モジュールのバージョン情報(存在する場合)の正常性確認がスキップされました。
- R: 強制的に実行中のカーネルから、使用中か、または削除されるべきでないモジュールが強制的に削除(Removed)されました(rmmodの強制オプション「-f」の使用による)。
- S: LinuxカーネルがSMP(Symmetric MultiProcessor)サポートで実行されていますが、システムのCPUがSMP用に設計または認定されていません。
- M: カーネルの実行中にMCE(Machine Check Exception)が発生しました。MCEは、ハードウェアによってトリガされ、ハードウェア関係の問題を示します(たとえば、しきい値を超えるCPU温度、修正不能なエラーをシグナルするメモリバンクなど)。
- B: 不良(Bad)ページ状態のプロセスが検出され、仮想メモリサブシステムの破損(おそらく、正常に動作しないRAMまたはキャッシュメモリが原因)を示しています。
これらの汚染フラグは、標準Linuxカーネルに実装されており、カーネルエラーメッセージで提供される情報が必ずしも信頼できないことを示しています。
SUSEカーネルには、次の追加汚染フラグが実装されています。
- U: 非サポート(Unsupported)モジュール(つまり、Novellでサポートされておらず、サードパーティーによってもサポートされていないとわかっているモジュール)がロードされました。たとえば、モジュールが、サポートできるほど成熟していないドライバであったり、十分にテストできなくなった古いタイプのハードウェアのドライバである場合があります。
- X: Novellではサポートしていませんが、サードパーティーによって外部的に(eXternally)サポートされているモジュールがカーネルにロードされました。
実行中のカーネルの汚染状態の判別
実行中のカーネルの汚染ステータスは、次のコードの実行で判別できます。
出力が0のとき、カーネルは汚染されていません。出力が0以外のとき、カーネルは汚染されています。この値は、適用中のすべてのカーネル汚染フラグの合計(論理和)です。現在使用されているカーネルフラグのリストは、次のファイルにあります。
カーネルでエラーが生成されると、汚染状態の詳細を示す文字列がこのファイルに入力されます。
汚染されたカーネルとNovell Technical Services
汚染されたカーネルによって提供される情報は、必ずしも信頼できず、Novellが利用できないソースコードを持つサードパーティーコードに関連している場合があるので、トラブルシューティングのためには限られた価値しかないことがあります。そのため、Novell Technical Servicesが汚染カーネル関係の問題に提供できるサポートも制限されます。
汚染されたカーネルで問題が発生した場合は、汚染されていないカーネル(またはX汚染だけのカーネル)を使用してその問題を再生するためにあらゆる努力をすることが重要です。そうすれば、Novell Technical Servicesが適切なサポートを提供できます。
カーネル汚染の回避
カーネルの汚染を避けるには、次の方法があります。
- 「P」汚染を避けるには、他のベンダーのドライバとモジュールの代わりに、Novell提供のドライバとモジュールを使用します。たとえば、ベンダーのプロプライエタリマルチパス実装ではなく、LinuxのデバイスマッパーマルチパスI/Oを使用します。
ただし、この方法は常に可能とは限りません。たとえば、一部のハードウェアコンポーネントは、プロプライエタリドライバによってのみサポートされます。
- 「F」または「R」の汚染を避けるには、カーネルモジュールのロード(またはアンロード)時に強制オプションを使用しないようにします。必要な場合は、実行中のカーネルバージョン専用に作成されたドライバを取得してください。
- 「S」汚染を避けるには、SMP用に設計または認定されていないCPUを持つシステムで、SMP対応カーネルを使用しないようにします。
- 「M」または「B」の汚染を避けるには、電源、温度、湿度、および空気の流れに関する指定のパラメータ内でハードウェアが稼動するようにします。さらに、ハードウェアベンダーからのハードウェア診断ツールを使用してハードウェアをチェックし、ハードウェアとハードウェア設定の問題点の詳細について、「Sig11 information page」を参照してください。
- 「U」を避けるには、「YES認定」の設定を使用します。
- 「X」汚染は、必ずしも問題であるとは限りません(サポートに関して、Novell Technical Servicesが関連ドライバをサポートするサードパーティを関与させることができます)。これは、SUSEカーネルで直接サポートされるハードウェアコンポーネントに切り替えることで回避できます。
Disclaimer
この情報は、米国Novell, Inc.およびノベル株式会社の内外から発生したものです。本文書の内容または本文書を使用した結果について、いかなる保証、表明または約束も行っていません。また、本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。
本文書に記載されている会社名、製品名はそれぞれ各社の商品、商標または登録商標です。
- ドキュメントID: 3582750
- 作成年月日: 26-JUL-2007
- 修正年月日: 27-APR-2009
- ドキュメントリビジョン:
- 分類:
- 対象NOVELL製品およびバージョン: SUSE Linux Enterprise Desktop, SUSE Linux Enterprise Server
- カテゴリ: