Linuxで意図的なカーネルパニックが発生しますか?

Linuxで意図的なカーネルパニックが発生しますか?

Linuxでカーネルパニックを引き起こす方法はありますか?私は聞いた

echo c > /proc/sysrq-trigger

しかし、ただ停止したようです。カーネルパニックかどうかはわかりません。カーネルパニックを引き起こす可能性のあるルートとして実行できるCプログラムはありますか?

答え1

殺して使う

以下を試してみることができると思います。

$ kill -6 1

これは信号#6をプロセス#1(initプロセス)に送る。シグナルマニュアルページを読む場合:ヒューマンシグナルNo.7:

   Signal     Value     Action   Comment
   -------------------------------------------------------------------------
   SIGHUP        1       Term    Hangup detected on controlling terminal
                                 or death of controlling process
   SIGINT        2       Term    Interrupt from keyboard
   SIGQUIT       3       Core    Quit from keyboard
   SIGILL        4       Core    Illegal Instruction
   SIGABRT       6       Core    Abort signal from abort(3)

プロセスがさまざまな信号を処理する方法を学ぶことができます(cat /proc/$PID/status)。詳しくは、このU&L Q&Aをご覧ください。プロセスがどのシグナルを聞いているかを確認する方法は?

メモリオーバーフロー

別のアプローチは、メモリオーバーフローによってカーネルパニックが発生することです。まず、スワップを無効にする必要があります。

$ swapon -s
Filename                Type        Size    Used    Priority
/dev/mapper/VolGroup00-LogVol01         partition   14352376    3177812 -1

$ swapoff /dev/mapper/VolGroup00-LogVol01

今、すべてのメモリを消費します。

$ for r in /dev/ram*; do cat /dev/zero > $r; done

引用する

答え2

あなたは試すことができますsudo kill -SEGV 1。これにより、MMエラー(カーネルの分割競合と同じ)が発生したかのように、initはすぐに中断されます。

答え3

一部のインテルハードウェアにはNMIボタン(マスク不可能割り込み)があります。NMIウォッチドッグが有効。 NMIウォッチドッグパニックを発生させるいくつかの異なる方法がある。

関連情報