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


http://www.facebook.com/Kerryn schrieb am 21.12.2011 09:07
Brilliance for free; your parents must be a sweetheart and a certified gneius.

Kommentar hinzufügen




CAPTCHA-Bild zum Spam-Schutz
Wenn Sie das Wort nicht lesen können, bitte hier klicken.
*