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