答え1
カーネルパニックはBSODと同じで、元に戻せないIIRCです。しかし、より小さな欠陥はOOPSです。これはカーネルにいくつかのバグがあることを示します。
- あなたはそれを使用することができますプログラムの実行パニック状態から新しいカーネルに切り替える(迅速な再起動で脅威を引き起こす可能性があります) - 関連性がある可能性システムダンプデバッグの問題
panic
パラメータを使用して、n秒後にカーネルを再起動できます。この場合、GRUBに代替カーネルに切り替えるように指示できます。- 使用マジックSysRQキースタックトレースなどを印刷します。
答え2
Linuxカーネルパニックは、カーネルロジックが通常のロジックの実行を継続できないようにするか、または無責任にする条件が存在すると判断したときにカーネルによって実行されるサブルーチン呼び出しです。
カーネルは次の状況でパニックを呼び出すことができます。
- カーネルコードまたはスタックでソフトウェアのバグを検出します。
- ランタイム条件が発生した場合(メモリー不足や終了するプロセスなど)
- 特権モードの実行中にCPU例外が原因で申し訳ありません。
3.Xカーネルにはパニックを起こすことができる状況が約950あります。パニックサブルーチンはまずカーネルスタックダンプとCPUレジスタをコンソールに出力します。次に、kexecカーネルを競合するように設定した場合は、kexecカーネルを起動します。それ以外の場合、パニックルーチンはすべてのスピンロックを破壊し、緊急再起動を実行します。
oopsは、特権(つまりカーネル)モードで実行されたときに発生するCPU例外を処理するためにCPU例外ハンドラによって呼び出されるサブルーチンです。カーネルコードのバグ、ハードウェアエラー、または特定の例外を発生させる外部条件によって、例外が発生する可能性があります。例外ハンドラは、CPUレジスタとモジュールのリストを含むカーネルログを出力します。パニック呼び出しとは異なり、カーネルロジック自体は CPU 例外ハンドラのコンテキストの外で oops を呼び出しません。
カーネルがkexec用に設定されている場合、oopsはkexecカーネルを起動します。それ以外の場合、割り込みハンドラの実行中に例外が発生すると、oops はカーネル緊急呼び出しを発生させます。それ以外の場合、カーネルが "panic on oops" で構成されている場合、oops はパニック呼び出しを発生させます。それ以外の場合、カーネルは例外ハンドラを終了し、実行を再開します。カーネルが例外ハンドラを終了して実行を再開すると、カーネルの整合性が疑われます。
CPU 例外ハンドラはアーキテクチャによって異なります。これは通常arch / * / kernel / traps.cで実装され、割り込みテーブルを設定するアーキテクチャ固有のカーネルエントリコードに設定されます。例arch/powerpc/kernel/traps.c
とを参照してくださいarch/powerpc/kernel/head_fsl_booke.S
。
カーネルパニック条件とoops条件の両方で、競合デバッグ情報をRAMまたはフラッシュメモリに保存するために使用できるルーチンを呼び出すように設定できますkmsg_dump
。ただし、oopsが割り込みコンテキストで発生する場合は、「kmsg_dump」ルーチンのみを使用できます。 MTDの代わりにRAMに保存します。 RAMに保存するときa)kexec起動または緊急再起動起動中に使用されたRAM領域を上書きしていないことを確認し、b)kexecカーネルまたはブートローダロジックからメモリ領域を取得することはユーザーの責任です。
答え3
これは予期しないプログラムフローの動作です(この場合、カーネルはプログラムです)。緊急事態が発生すると、プログラムの動作が停止します。 Windows BsoDと同じです。 KP はカーネルやモジュールに問題があることを意味します。安定したカーネルならドライバを確認してください。特別なことがなく、ドライバがすべて共通の場合、ハードウェアの問題かもしれません。