Was ist eine "Kernel-Panik"?

19

Was bedeutet es, wenn Ihr Computer eine "Kernel-Panik" hat ?

Entspricht es dem Windows BsoD ?

Welche Methoden, Tipps und Tricks stehen dem Benutzer zur Verfügung, wenn eine Kernel-Panik auftritt?

Stefan
quelle
3
Eine Kernel-Panik ist besser als ein BSOD, weil sein Name impliziert, was der Benutzer tun sollte, wenn es passiert.
Amphetamachine
Ein Windows-Blau gibt auch einige Informationen, obwohl es die meiste Zeit nicht so hilfreich ist.
ott--

Antworten:

16

Kernel-Panik ist dasselbe wie BSOD und nicht wiederherstellbares IIRC. Ein kleinerer Fehler ist jedoch OOPS, was auf einen Fehler im Kernel hinweist.

  1. Sie können mit kexec den Schaltern zu neuen Kernel auf Panik (man kann Bedrohung , die es so schnell Neustart) - möglicherweise sinnvoll immer Dump - System , das Problem zu debuggen
  2. Sie können einen panicParameter verwenden, der den Kernel nach n Sekunden neu startet. In diesem Fall können Sie GRUB anweisen, auf den Fallback-Kernel zu wechseln
  3. Verwenden Sie die Magic SysRQ-Tasten , um Stapelspuren usw. zu drucken.
Maciej Piechotka
quelle
6
Richtiger ist, dass ein BSOD ein KP mit einer wirklich schlechten Fehlermeldung ist.
Xenoterracide
Das bemerkenswerteste magische SysRq war emergency sync, die Puffer zu leeren (wenn es noch möglich ist).
ott--
6

Eine Linux-Kernel-Panik ist ein Unterprogrammaufruf, den der Kernel ausführt, wenn die Kernellogik feststellt, dass eine Bedingung vorliegt, die die weitere Ausführung der normalen Logik unmöglich oder verantwortungslos macht.

Der Kernel kann eine Panik auslösen, wenn:

  1. Es erkennt einen Softwarefehler im Kernelcode oder Stapel
  2. Wenn eine Laufzeitbedingung vorliegt, z. B. nicht genügend Arbeitsspeicher, ohne dass Prozesse abgebrochen werden können
  3. Eine CPU-Ausnahme während der Ausführung im privilegierten Modus führt zu einer oops-Bedingung

Es gibt ungefähr 950 verschiedene Bedingungen, unter denen in den 3.X-Kerneln eine Panik ausgelöst wird. Die Panik-Subroutine druckt zuerst den Kernel-Stack-Dump und die CPU-Register an die Konsole. Wenn dann ein Crash-Kernel konfiguriert wurde, wird der Kernel gebootet. Andernfalls sprengt die Panikroutine alle Spinlocks und führt einen Notfall-Neustart durch.

Ein oops ist eine Unterroutine, die von einem CPU-Ausnahmebehandler für eine CPU-Ausnahme aufgerufen wird, die bei der Ausführung im privilegierten Modus (dh im Kernel-Modus) auftritt. Die Ausnahme kann als Ergebnis eines Fehlers im Kernelcode oder aufgrund eines Hardwarefehlers oder als Ergebnis einer externen Bedingung auftreten, die eine bestimmte Ausnahme verursacht. Der Handler für die Ausnahme druckt ein Kernel-Protokoll mit CPU-Registern und Modulen. Im Gegensatz zu Panikaufrufen ruft die Kernellogik selbst niemals ein Oops außerhalb des Kontexts von CPU-Ausnahmebehandlungsroutinen auf.

Wenn der Kernel für Kexec konfiguriert ist, führt ein Hoppla dazu, dass der Kexec-Kernel gebootet wird. Wenn andernfalls die Ausnahme während der Ausführung eines Interrupt-Handlers auftritt, führt der Befehl oops zu einem Kernel-Panic-Aufruf. Andernfalls, wenn der Kernel mit "Panic On Oops" konfiguriert ist, führt das Oops zu einem Panic Call. Andernfalls verlässt der Kernel den Ausnahmehandler und setzt die Ausführung fort. Wenn der Kernel den Ausnahmehandler verlässt und die Ausführung wieder aufnimmt, ist die Integrität des Kernels verdächtig.

CPU-Ausnahmebehandlungsroutinen sind architekturspezifisch. Sie werden normalerweise in arch / * / kernel / traps.c implementiert und im architekturspezifischen Kerneleintragscode festgelegt, der die Interrupt-Tabelle erstellt. Siehe zum Beispiel arch/powerpc/kernel/traps.cund arch/powerpc/kernel/head_fsl_booke.S.

Sowohl die Kernel-Panik- als auch die Oops-Bedingung können so konfiguriert werden, kmsg_dumpdass sie eine Routine aufrufen , mit der Sie Absturz-Debugging-Informationen im RAM oder im Flash-Speicher speichern können, es sei denn, die Oops sind im Interrupt-Kontext aufgetreten. In diesem Fall kann nur die Routine „kmsg_dump“ verwendet werden Speichern Sie im RAM, nicht auf MTD. Beim Speichern im RAM liegt es in Ihrer Verantwortung, a) sicherzustellen, dass der verwendete RAM-Bereich während des Kexec-Starts oder eines Neustarts im Notfall nicht überschrieben wird und b) den Speicherbereich vom Kexec-Kernel oder von der Bootloader-Logik zu beziehen.

Jonathan Ben-Avraham
quelle
5

Dies ist das unerwartete Verhalten des Programmflusses (in diesem Fall ist der Kernel ein Programm). Im Falle einer Panik funktioniert das Programm nicht mehr. Es ist gleich dem Windows BsoD. KP bedeutet, dass mit dem Kernel oder den Modulen etwas nicht stimmt. Wenn es ein stabiler Kernel ist, schauen Sie sich die Treiber an. Wenn nichts Besonderes und alle Treiber gemeinsam sind, liegt möglicherweise ein Hardwareproblem vor.

Dmytro Leonenko
quelle
oder Kernel geht Picknick ..
uray
Selbst in einem stabilen Kernel gibt es immer noch einige Fehler.
ott--