$Keywords: panic.ko linux kernel module to force kernel panic $
カーネルが CONFIG_KEXEC つきでコンパイルされていれば
# echo c > /proc/sysrq-triggerで kernel panic を起こせますが、
sysrq-triggerが使えない場合は panic()を呼び出すカーネルモジュールをinsmodしてpanicさせます。
…panicしたあと、ちゃんと自動再起動する・しないを確認したり、 リブート後のcoreの抽出がうまくいくのか確認したり。
Linux はデフォルトでは自動再起動しません。 sysctl -w kernel.panic=10 (10秒後に再起動) とかする必要あり。
$Id: linux-panic.m4,v 1.2 2007/06/05 14:07:23 kabe Exp $
#include <linux/module.h> #include <linux/kernel.h> static char panic_msg_init[] __initdata = "invoked"; static char panic_msg_exit[] __exitdata = "exiting"; static int __init panic_init() { printk(KERN_INFO "panic module: %s.\n", panic_msg_init); /* This will just cause oops */ // *((char*)0x0c) = 0; panic("Panic Module has been insmod."); return 0; } static void __exit panic_exit() { printk(KERN_INFO "panic module: %s.\n", panic_msg_exit); } module_init(panic_init); module_exit(panic_exit); |
This panic.ko module will force a panic on Linux kernel. If the kernel is compiled with CONFIG_KEXEC, # echo c > /proc/sysrq-trigger should force panic; try that first. References: /usr/share/doc/kernel*/Documentation/sysrq.txt Compile: make Panic: insmod ./panic.ko To automatically reboot after panic: sysctl -w kernel.panic=10 #10 seconds |
obj-m += panic.o KDIR=/lib/modules/`uname -r`/build all: $(MAKE) -C $(KDIR) M=$(PWD) modules clean: $(MAKE) -C $(KDIR) M=$(PWD) clean install: $(MAKE) -C $(KDIR) M=$(PWD) modules_install |