Wo sind Kernel-Panik-Protokolle?

31

Ich habe ein Problem mit Handbremse / ffmpeg. Nach ca. 5 Minuten Transcodierung stürzt der Computer ab. Ich bin mir ziemlich sicher, dass es eine Kernel-Panik ist, weil die Feststelltaste zu blinken beginnt.

Es gibt ein paar logische Fragen darüber, was zu tun ist und einige zu bestimmten Fehlern, aber ich bin wirklich hinter einer Sache her: Was ist passiert, kurz bevor alles gestorben ist ?!

Ich habe nachgesehen /var/log/kern.logund sehe nur, dass ich eine DVD einlege und ein paar Minuten später das System hochfährt. Keine Fehler, keine Panikmitteilung.

Gibt es eine Möglichkeit, die Protokollierung von Paniken zu erzwingen? Ich bin mir ziemlich sicher, dass ich das reproduzieren kann (es ist in 100% der Fälle passiert, in denen ich es kürzlich versucht habe), also bin ich glücklich genug, ein paar Mal neu zu starten, wenn es heißt, dass ich es kann Finden Sie die Ursache der Panik.

Oli
quelle
Gibt es eine bestimmte Nachricht, die Sie beim Transcodieren erhalten?
Könnte
@ Rinzwind Nö. Hat nichts gezeigt, nur gefroren.
Oli
Höchstwahrscheinlich ein Überhitzungsproblem. Durch das Umcodieren wird die CPU stark beansprucht, und wenn die Kühlung nicht 100% effektiv ist, wird die CPU im Notfall heruntergefahren. Ich habe dies zum Beispiel gesehen, als die Wärmeleitpaste auf dem CPU-Kühlkörper ausgetrocknet war. Dies geschah auch, als die Übertaktungseinstellungen im BIOS fehlerhaft waren. Verwenden Sie xsensors, um die CPU-Temperatur unmittelbar vor dem Absturz zu überwachen.
Neil Mayhew

Antworten:

21

Alle Ihre Systemprotokolle in Ubuntu werden verwaltet, rsyslogwobei die Konfiguration in /etc/rsyslog.confund erhalten bleibt /etc/rsyslog.d/.

Weitere Informationen zur Konfiguration rsyslogund zu den möglichen Optionen finden Sie unter rsyslog.conf man page.

Beim Öffnen sehen /etc/rsyslog.d/50-default.confSie, dass eine der Zeilen enthält

*.*;auth,authpriv.none -/var/log/syslog*

Das bedeutet, dass die Datei, nach der Sie in diesem Fall suchen, eines der riesigen /var/log/syslogProtokolle ist, die Sie wahrscheinlich haben werden.

Sie können sehen, dass der Dateiname auch mit a beginnt -. Dies bedeutet, dass die Datei vor dem Schreiben zwischengespeichert wird. Es ist großartig, aber Sie können ein fehlerhaftes Protokoll zurücklassen. Sie möchten, dass das Protokoll geschrieben wird, sobald ein Problem auftritt. Entfernen Sie den Bindestrich und starten rsyslogSie den Computer neu oder laden Sie ihn neu. Lassen Sie den Computer dann erneut abstürzen /var/log/syslog.

Bruno Pereira
quelle
1
"-" Neustart entfernt, überprüft / var / log / syslog | grep Panik. Es hat nicht funktioniert. Habe ich etwas verpasst ?
AAI
26

Wenn es sich wirklich um eine Kernel-Panik handelt, wird sie nicht über normale Methoden in ein Protokoll geschrieben. Da der Kernel zu diesem Zeitpunkt abgestürzt ist, ist das Schreiben in das Dateisystem ein riskantes Unterfangen - nicht mehr viel vom Kernel kann als vertrauenswürdig eingestuft werden, sodass das Schreiben in Protokolle möglicherweise zufälligen Mist über Ihren Bootloader spuckt!

Stattdessen können Sie den Speicherinhalt in Ihren Swap sichern und ihn später debuggen. Dies wird als Kernel-Crash / Core-Dump bezeichnet.

Das Ubuntu Wiki hat ein CrashdumpRecipe , das nützlich sein kann - obwohl es ein bisschen veraltet aussieht, denke ich nicht, dass sich zu viel hätte ändern sollen.

Cäsium
quelle
10
Das CrashdumpRecipe bezieht sich auf das Linux-Kernel-Crash-Dump-Tool (LKCD), das auf Sourceforge verfügbar ist. Es gibt ein Paket für Ubuntu mit dem Namen linux-crashdump; Dieses Paket ist weiterhin in allen Versionen verfügbar .
Mei
3

Serielle Schnittstelle

Die serielle Schnittstelle ist ein einfacher Kommunikationsmechanismus auf niedriger Ebene zwischen Computern.

Vorteile:

  • einfache Einrichtung einmal (wenn Sie die Hardware haben)
  • zuverlässig, da die Datenübertragung nur von einer einfachen Kabel- und Kernel-API abhängt, die weniger von der Panik betroffen ist als beispielsweise das TCP / IP-Subsystem.

Nachteile:

  • Die meisten modernen Laptops verfügen nicht mehr über die serielle Schnittstelle (sichtbar?), um Platz zu sparen. Aber Desktops und virtuelle Maschinen tun dies immer noch.
  • Sie benötigen auch einen zweiten Computer mit serieller Schnittstelle, um die Daten zu empfangen. Dies gilt jedoch grundsätzlich für alle eingebetteten Entwicklungskarten wie den Raspberry Pi.
  • Dies ist im Gegensatz zu unbegrenzten TCP / IP-Netzwerken durch die Länge des seriellen Kabels der physischen Schicht begrenzt. Dies kann jedoch mit einem Gerät umgangen werden, das eine Schnittstelle zwischen seriell und TCP / IP bildet. Es gibt aber Geräte, die sich zwischen den beiden umwandeln.

Die serielle Schnittstelle sieht folgendermaßen aus:

und auf dem RPI ist über den GPIO verfügbar.

Wenn Sie über die erforderliche Hardware verfügen, verbinden Sie den zweiten Computer mit dem Hauptcomputer mit:

screen /dev/ttyS0 115200

Dies gibt Ihnen tatsächlich eine Shell.

Starten Sie dann auf dem Hauptcomputer den Vorgang, der in Panik gerät.

Wenn die Panik auftritt, wird der Panikspeicherauszug auf die zweite Maschine übertragen, und Sie können alles sehen, indem Sie auf dem Terminal nach oben scrollen.

Andere Methoden

Es gibt auch andere Verfahren, die die oben erwähnten Hardware-Beschränkungen überwinden, auf Kosten einer höheren Komplexität und einer geringeren Zuverlässigkeit. Bemerkenswerte Methoden:

  • netdump: Überträgt die Panik über TCP / IP. Setzt voraus, dass das TCP / IP-Subsystem nicht beschädigt ist.
  • kdump: scheint der zugrunde liegende Mechanismus von linux-crashdump zu sein, der unter folgender Adresse erwähnt wird: https://askubuntu.com/a/104793/52975 Startet einen zweiten Linux-Kernel, um den abgestürzten Kernel zu untersuchen. Was könnte möglicherweise falsch laufen?! :-)

Siehe auch diese großartige Antwort: https://unix.stackexchange.com/questions/60574/determining-cause-of-linux-kernel-panic

Step-Debugging

Um eine Panikausgabe zu erhalten, müssen einige Kernelfunktionen funktionieren, und alle Kernelfunktionen können durch die Panik beschädigt werden.

Aber wer braucht Panik, wenn Sie GDB auf dem Kernel verwenden können? Wenn Sie so hardcore sind, schauen Sie sich an:

Jedes Problem fällt, sobald Sie die volle Sicht haben (und genug Zeit!).

Ciro Santilli ist ein Schauspieler
quelle