$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 |