Последовательный порт
Последовательный порт - это простой низкоуровневый механизм связи между компьютерами.
Преимущества:
- простая настройка один раз (если у вас есть оборудование)
- надежный, поскольку передача данных зависит только от простых проводов и API ядра, которые с меньшей вероятностью будут затронуты паникой, чем, скажем, подсистема TCP /IP.
Недостатки:
- большинство современных ноутбуков больше не имеют последовательного порта (открытого?) для экономии места. Но настольные компьютеры и виртуальные машины по-прежнему работают.
- вам также понадобится второй компьютер с последовательным портом для приема данных, но это относится практически ко всем встроенным платам разработки, таким как Raspberry Pi.
- ограничена длиной последовательного кабеля физического уровня, в отличие от сетей TCP/IP, которые не ограничены. Однако это можно обойти, подключив устройство, которое преобразует между последовательным и TCP/IP в последовательный на удаленном компьютере
Последовательный порт выглядит следующим образом:

а на RPI доступен через GPIO, вот как это выглядит (с интерфейсом USB к ноутбуку на другой стороне):

более наглядный пример того, что используется можно увидеть здесь.
Затем, если у вас есть необходимое оборудование, подключитесь со второго компьютера к основному компьютеру с помощью:
screen /dev/ttyS0 115200
Это на самом деле дает вам оболочку.
Затем на главном компьютере запустите операцию, которая вызывает панику.
Когда возникает паника, дамп паники передается потоком на вторую машину, и вы можете увидеть все это, прокрутив вверх на терминале.
Другие методы
Существуют также другие методы, которые преодолевают аппаратные ограничения, упомянутые выше, за счет того, что они более сложны и менее надежны. Известные методы:
- netdump: передает панику по протоколу TCP/IP. Полагается на то, что подсистема TCP/IP не повреждена.
- kdump: по-видимому, это базовый механизм linux-crashdump, упомянутый в: https://askubuntu.com/a/104793/52975 Загружает второе ядро Linux для проверки разбитого ядра. Что может пойти не так?! :-)
Смотрите также этот замечательный ответ: https://unix.stackexchange.com/questions/60574/determining-cause-of-linux-kernel-panic
Пошаговая отладка
В конечном счете, получение вывода panic требует, чтобы некоторые функции ядра работали, и любая функциональность ядра может быть повреждена паникой.
Но кому нужна паника, если вы можете использовать GDB в ядре? Если вы такой хардкорный, взгляните на:
Каждая проблема решается, как только у вас появляется полная видимость (и достаточно времени!).