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ウォッチドッグパニックを発生させるいくつかの異なる方法がある。