回答:
カーネルパニックはBSODと同じであり、レスキュー不可能なIIRCです。ただし、小さな障害はOOPSであり、カーネルのエラーを示します。
panic
n秒後にカーネルを再起動するパラメーターを使用できます。このような場合、フォールバックカーネルに切り替えるようにGRUBに指示できます。emergency sync
、バッファをフラッシュすることでした(可能な場合)。
Linuxカーネルパニックは、通常のロジックの継続的な実行を不可能または無責任にする条件が存在するとカーネルロジックが判断したときにカーネルが実行するサブルーチン呼び出しです。
カーネルは、次の場合にパニックを呼び出すことができます。
3.Xカーネルでパニックが呼び出される条件は約950あります。パニックサブルーチンは、最初にカーネルスタックダンプとCPUレジスタをコンソールに出力します。次に、クラッシュkexecカーネルが構成されている場合、kexecカーネルを起動します。それ以外の場合、パニックルーチンはすべてのスピンロックを無効にし、緊急時の再起動を実行します。
oopsは、特権(カーネル)モードで実行中に発生するCPU例外のCPU例外ハンドラーから呼び出されるサブルーチンです。例外は、カーネルコードのエラー、ハードウェア障害、または特定の例外を引き起こす外部条件の結果として発生する可能性があります。例外のハンドラーは、CPUレジスタとモジュールリストを含むカーネルログを出力します。パニック呼び出しとは異なり、カーネルロジック自体は、CPU例外ハンドラーのコンテキスト外でoopsを呼び出すことはありません。
カーネルがkexec用に構成されている場合、oopsによりkexecカーネルがブートされます。それ以外の場合、割り込みハンドラの実行中に例外が発生すると、oopsはカーネルパニックコールになります。それ以外の場合、カーネルに「oops on oops」が設定されていると、oopsはパニックコールになります。それ以外の場合、カーネルは例外ハンドラを終了し、実行を再開します。カーネルが例外ハンドラを終了して実行を再開すると、カーネルの整合性が疑われます。
CPU例外ハンドラはアーキテクチャ固有です。それらは通常arch / * / kernel / traps.cに実装され、割り込みテーブルを設定するアーキテクチャ固有のカーネルエントリコードに設定されます。例arch/powerpc/kernel/traps.c
とを参照してくださいarch/powerpc/kernel/head_fsl_booke.S
。
カーネルパニックとoopsの両方の条件を設定しkmsg_dump
て、クラッシュデバッグ情報をRAMまたはフラッシュメモリに保存するために使用できるルーチンを呼び出すことができます(oopsが割り込みコンテキストで発生しない限り)。この場合、「kmsg_dump」ルーチンはMTDではなくRAMに保存します。RAMに保存する場合、a)使用されるRAM領域がkexecブートまたは緊急時再起動ブート中に上書きされないことを確認し、b)kexecカーネルまたはブートローダーロジックからメモリ領域をハーベストする責任があります。