Kernel-Panic simulieren/auslösen

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Rootie2000
Beiträge: 4
Registriert: 14.07.2006 10:25:38

Kernel-Panic simulieren/auslösen

Beitrag von Rootie2000 » 14.07.2006 10:48:06

Hallo Leute,

habe schon seit langem ein "Problem" und hoffe das ihr mir dabei weiterhelfen könnt. Ich möchte eine Kernel-Panic simulieren/auslösen. Vielleicht habt ihr ne Idee wie das relativ einfach zu bewerkstelligen wäre ohne einen schadhaften Kernel neu zu kompilieren.

Grund des Ganzen ist ein Grub-Fallback-Test.

System:
Debian Sarge
2.6.8

MfG

daedalus
Beiträge: 286
Registriert: 04.02.2005 17:06:16

Beitrag von daedalus » 14.07.2006 11:49:31

Mit dem Kernel habe ich das noch nicht probiert, aber mit
> gdb
sollte das gehen (hab gehört, dass jemand so seine gelöschte Apache-Config wiederhergestellt hat - lol)
Das Problem ist der Parser. Der ist nicht fuzzy genug.
--Klaus Knopper

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 14.07.2006 12:31:43

Zum Testen vom Grub-Fallback kannst du doch ganz normal rebooten. Grub erkennt ja nicht wirklich ob eine Kernel Panik passiert ist. Von Grub wird ja immer der nächste Fallback Kernel gebootet, außer du setzt explicit den Default-Kernel (mit z.B. grub-set-default 0). Anders ausgedrückt, wenn du verhinderst, daß "grub-set-default" aufgerufen wird, geht Grub immer von einer Kernel Panic aus.

Wenn du ein falschen Kernelparameter "root=" angibst, hast du deine Kernel Panic.

Ein Modul zu schreiben, welches beim Laden eine Kernel Panic auslöst, ist auch ganz leicht. Wenn du das möchtest könnte ich dir ein entsprechendes Grundgerüst posten.

Gruß
gms

Rootie2000
Beiträge: 4
Registriert: 14.07.2006 10:25:38

Beitrag von Rootie2000 » 14.07.2006 12:50:22

Danke für die schnellen Antworten!
gms hat geschrieben: Wenn du ein falschen Kernelparameter "root=" angibst, hast du deine Kernel Panic.

Ein Modul zu schreiben, welches beim Laden eine Kernel Panic auslöst, ist auch ganz leicht. Wenn du das möchtest könnte ich dir ein entsprechendes Grundgerüst posten.

Gruß
gms
Ich meine das Grub das schon vorher erkennt wenn du falschen "root" angibst und garnicht erst bootet.


Wäre super wenn du mir Anregungen (Grundgerüst) bezüglich des Moduls posten könntest!

P.S:
"grub-set-default 0 " funktioniert unter Sarge nicht.

MfG

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 14.07.2006 13:08:15

Rootie2000 hat geschrieben:
gms hat geschrieben: Ich meine das Grub das schon vorher erkennt wenn du falschen "root" angibst und garnicht erst bootet.
Der Kernelparameter wird von Grub sicherlich nicht überprüft
Rootie2000 hat geschrieben: Wäre super wenn du mir Anregungen (Grundgerüst) bezüglich des Moduls posten könntest!
file panic.c

Code: Alles auswählen

#include <linux/version.h>
#include <linux/module.h>

MODULE_LICENSE("GPL");

int init_module(void)
{
     panic("do not panic, I will do it for you");
     return 0;
}

void cleanup_module(void)
{
         return;
}
Makefile

Code: Alles auswählen

obj-m   := panic.o

Code: Alles auswählen

root@gms4:~/panic# make -C /usr/src/linux SUBDIRS=/root/panic modules
root@gms4:~/panic# ls -l panic.ko
-rw-r--r-- 1 root root 1893 2006-07-14 13:06 panic.ko
Rootie2000 hat geschrieben: "grub-set-default 0 " funktioniert unter Sarge nicht.
wenn dem so ist, wie möchtest du dieses Problem dann lösen ?
Du mußt Grub ja mitteilen, daß alles bei diesem Bootvorgang in Ordnung war, ansonsten wird automatisch beim nächsten Boot der Fallback-Kernel gebootet.

Gruß
gms

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 14.07.2006 13:11:25

Noch einfacher geht ein Reset per Software:

Code: Alles auswählen

echo "s" > /proc/sysrq-trigger
sleep 3
echo "b" > /proc/sysrq-trigger
Aber auf einem System mit nützlichen Daten
würde ich das nicht machen! Die Wirkung ist
praktisch wie Stromausfall :!:

Dann kann man eigentlich auch direkt den
Reset-Taster benutzen...
Beware of programmers who carry screwdrivers.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 14.07.2006 13:32:19

cosmac hat geschrieben:Noch einfacher geht ein Reset per Software:

Code: Alles auswählen

echo "s" > /proc/sysrq-trigger
sleep 3
echo "b" > /proc/sysrq-trigger
Aber auf einem System mit nützlichen Daten
würde ich das nicht machen! Die Wirkung ist
praktisch wie Stromausfall :!:
@cosmac
Die Lösung hatte ich auch kurz im Sinn, aber wenn ich das richtig verstehe, ist das (aus der Sicht des Kernel's) leider nur ein (unsauberer) Reboot und keine wirkliche Kernel Panic.

@Rootie2000
Die Doku zu cosmac's Vorschlag findest du in den Kernel-Sourcen unter "Documentation/sysrq.txt"


Gruß
gms

Rootie2000
Beiträge: 4
Registriert: 14.07.2006 10:25:38

Beitrag von Rootie2000 » 14.07.2006 13:34:49

Danke für das Grundgerüst gms !
gms hat geschrieben:
wenn dem so ist, wie möchtest du dieses Problem dann lösen ?
Du mußt Grub ja mitteilen, daß alles bei diesem Bootvorgang in Ordnung war, ansonsten wird automatisch beim nächsten Boot der Fallback-Kernel gebootet.

Gruß
gms

Frag mich nicht wie es in Sarge geregelt wird aber es funktioniert, es ist noch nichtmal eine
"/boot/grub/default" vorhanden.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 14.07.2006 13:40:50

Rootie2000 hat geschrieben: Frag mich nicht wie es in Sarge geregelt wird aber es funktioniert, es ist noch nichtmal eine
"/boot/grub/default" vorhanden.
Hast du es auch schon durchgetestet ? Laut Manual solltest du diesen Aufruf aus einem rc-Script absetzen:
http://www.gnu.org/software/grub/manual/html_node/Booting-fallback-systems.html hat geschrieben: However, you need to run grub-set-default (see Invoking grub-set-default) when `A' starts correctly or you fix `A' after it crashes, since GRUB always sets next boot entry to a fallback entry. You should run this command in a startup script such as rc.local

Rootie2000
Beiträge: 4
Registriert: 14.07.2006 10:25:38

Beitrag von Rootie2000 » 14.07.2006 13:53:41

Ich kann "grub-set-default" ja garnicht aufrufen weil es das programm/binary garnicht gibt.

Bin zurzeit noch auf Arbeit und werde alles testen wenn ich @home bin.

P.S: In sid/etch soll es "grub-set-default" wieder geben.

Antworten