Kernel-Panic per Modul auslösen
Motivation:
Im Zusammenhang mit hochverfügbaren Serversystemen mittels heartbeat stand ich vor dem Problem eine Methode finden zu muessen, einen Rechner todsicher killen zu können. Und zwar dann, wenn irgendwas Fatales (zB. defektes Dateisystem) passiert, was ein Herunterfahren verhindert.
Als Lösung bietet sich ein Kernelmodul an, welches beim Laden in den Kernel einen Kernel-Panic erzwingt.
Code:
Trivial, aber effektiv.
panic.c
#include <linux/version.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
int init_module(void) {
panic("Root forced kernel panic");
return 0;
}
Kompilieren:
Wer gern mit gepatchten Kerneln spielt, sollte dem gcc (selbe Verson wie Kernel-gcc!) das Include-Verzeichnis des aktuellen Kernelbaums mitgeben, da sonst die Versionen möglicherweise nicht zusammenpassen.
Nach einem gepflegten
gcc -D__KERNEL__ -DMODULE -I/usr/src/linux-2.4.20/include -Wall -c -o panic.o panic.c
sollte also eine Datei panic.o erstellt worden sein, die mittels modprobe oder insmod unter Angabe des kompletten Pfades in den Kernel geladen werden kann, um dort ihr fatales Werk zu verrichten.
Wer will, kann das Modul nach /lib/modules/"Kernel-Version"/kernel/misc schieben, um sich die Eingabe des Pfades zu sparen, aber das kann ich nur bedingt empfehlen ...