Sometimes it is useful to panic a linux machine, specially when testing various HA setups or kdump thingies.

I found that “echo c > /proc/sysrq-trigger” is not enough. It produces a kernel dump but the machine keeps running. So I went with the more “hardcore” option: a kernel module that calls panic(). The idea is described in Linux Crash Howto, but here it is upgraded for the 2.6 kernel.

panic.c:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>

static int __init enter_module(void)
{
  panic("forcing kernel panic.\n");
  return 0;
}

static void __exit exit_module(void)
{
/* dead code here */
  printk("Bye!\n");
}

module_init(enter_module);
module_exit(exit_module);

MODULE_AUTHOR("John Doe");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Panic mode on!");

Makefile:

obj-m += panic.o
all:
      make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
      make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Have kernel sources handy, put these two files in a directory of your liking and simply say “make”. You're presented with a panic.ko, which you simply insmod to kill the machine.