Почему я не могу видеть полное Linux ядро ​​pani c внутри моего терминала на дисплее, а могу видеть через COM-порт? - PullRequest
0 голосов
/ 23 апреля 2020

В некоторых случаях необходимо просмотреть полный журнал Linux kernel pani c.
Но часто это невозможно сделать с помощью обычного терминала на дисплее.
Я думал, что это должно быть сделано через COM-порт, но не могу понять:
Как я могу это сделать?
В чем причина хорошей работы через COM-порт, а не через терминал на моем дисплее?

UPD: я использую пользовательский Linux (ядро 4.9) на основе debian с HDMI-дисплеем.
Связанный: Как получить вывод Linux pani c на последовательную консоль USB когда система имеет также адаптер дисплея

1 Ответ

1 голос
/ 23 апреля 2020

Простая консоль прямого подключения / VTY использует графическую карту для преобразования символьных байтов (0 - 255) в отображаемые символьные ячейки. 80x25 является распространенным форматом. Это очень просто и не сложно для ядра с ошибками. Просто скопируйте немного памяти.

Графическая консоль более сложна, потому что ядро ​​теперь должно найти растровое изображение шрифта для символа и скопировать растровое изображение на дисплей. Он также должен обрабатывать прокрутку с большим количеством копий памяти или вызовами IOCTL в графический драйвер и т. Д. c.

Консоль, запущенная в сеансе Gnome или KDE GUI, очень сложна. Ядро вообще не участвует в его отрисовке и не знает как.

Чем сложнее процесс вывода, тем менее вероятно, что ядро, которое уже аварийно завершает работу, сможет справиться это успешно.

Выход последовательного порта еще раз очень прост. Буферизованный UART делает его немного более сложным, но если ядро, вызывающее сбой, хочет игнорировать это и просто выводит байты со скоростью 9600 строк, любой последовательный порт будет работать с этим без необходимости использования буферов или управления прерываниями.

...