Hilfe! kernel trap 12 beim Booten!

hartmut

Debian user
Ich hab' mein 5.3-System, das superrund lief, wegen setiathome (hatte sich verhakt) neu gebootet, und jetzt kommt das:
Code:
kernel trap 12 with interrupts disabled


Fatal trap 12: page fault while in kernel mode
fault virtual address	= 0x1
fault code		= supervisor write, page not present
instruction pointer	= 0x8:0xc075cbac
stack pointer		= 0x10:0xc0c21cd0
frame pointer		= 0x10:0xc0c21d1c
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, def 32 1, gran 1
processor eflags	= resume, IOPL = 0
current process		= 0 ()
trap number		= 12
panic: page fault
Uptime: 1s
Danach bleibt der Rechner stehen, so daß ich die mit Boardsuche und FAQ ermittelten Hinweise m. E. nicht umsetzen kann. Single-User-Mode bringt das gleiche Ergebnis. Was mach' ich? Ich bin grad völlig hilflos und schreib' am Debian-Rechner ...

Vielen Dank!
 
free schrieb:
1. Lad dir mal von heise.de den ct-ramtest runter, und teste, ob der speicher kaputt ist
Werd' ich machen.
free schrieb:
2. Wo genau beim booten kommt das denn? Kann es sein, das da Mist passiert?
Gleich nach Copyright, Prozessor- und Speicherangabe.
free schrieb:
3. Kannst du evtl. aus einem Dump was lernen, vorrausgesetzt, du kannst noch einen ziehen?
http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/kerneldebug.html
Werd' ich versuchen.

Vielen Dank!
 
Ok, da "vorne" kann es auf jeden fall nicht sein, dass irgendein programm/daemon den absturz verursacht. Und wenn du nicht schon einen debug-kernel am start hattest, kannst du so ja wohl auch keinen bauen...ich tippe auf defekten speicher.
 
Entwarnung!

Speichertest brachte nichts, aber weil ich zwischendurch ganz wüst mit dem Kernel umgesprungen bin (http://www.bsdforen.de/showthread.php?t=9721; macht man nicht, ich weiß :huth: ), hab' ich mir unsportlicherweise das Basissystem per sysinstall ("Upgrade") neu installiert.
Und: Alles außer der SCSI-Emulation für den Brenner (-> neuen Kernel schnitzen) funktioniert wieder! *tanz*
Vielen Dank für die Hilfe!
 
Jetzt hast Du das Problem schon in den Griff bekommen. Aber der Vollständigkeit halber will ich trotzdem mal den Tip anfügen, daß man einen verhunzten Kernel (und auch einen kaputten Boot Loader) umgehen kann, um das System zu booten.

Bei jedem "make installkernel" und "make kernel" wird der alte Kernel nach "kernel.old" kopiert. Unter diesem Namen ist er dann verfügbar, bis er durch die nächste Installation eines neuen Kernels überschrieben wird. Dasselbe gilt für den Boot Loader, der nach "loader.old" wandert.

Beim Start kannst Du jetzt, sobald das Bootmenü mit dem Beastie kommt, in den "Boot Loader Prompt" wechseln und dort mit "boot kernel.old" den alten Kernel starten. Wenn Du viel experimentierst, solltest Du Dir immer einen funktionierenden Kernel an die Seite legen. Einfach einen funktionierenden Kernel zum Beispiel nach "kernel.good" kopieren. Bei einem Hänger kannst Du dann immer mit "boot kernel.good" diesen Kernel anwählen, auch wenn Dein aktueller ("kernel") und der vorherige ("kernel.old") beide kaputt sein sollten.

Beim Boot Loader ist alles analog. Der einzige Unterschied besteht darin, daß er schon viel früher im Bootprozeß geladen wird. Um ihn zu umgehen und eine alte Version zu laden, solltest Du sofort zu Beginn des Bootvorgangs, noch ehe irgend etwas auf dem Bildschirm angezeigt wird, eine beliebige Taste drücken. Dann kommt ein minimaler Prompt, der es Dir erlaubt, den gewünschten Boot Loader zu wählen. Das Kommando für den Standardloader wird als Beispiel angezeigt. Du mußt nur dieses Kommando abtippen und dabei "loader" durch "loader.old" (oder "loader.good", wenn Du Dir einen funktionierenden Loader an die Seite gelegt hast) ersetzen. Übrigens wirst Du an dieser Stelle mit einer englischen Tastaturbelegung konfrontert, so daß Du munter nach den passenden Tasten suchen darfst ;).
 
Ah ja! Das mit dem kernel.old wußte ich prinzipiell, kam aber im entscheidenden Moment nicht drauf. Das mit dem loader.old war mir neu. :)
Vielen Dank!
 
Ein guter Tipp ist, einen unveränderten Kernel nach /boot/GENERIC zu kopieren. So hat man immer einen, der zu mindestens in den Single User Mode booten sollte!
 
Zurück
Oben