为什么我在终端中看不到完整的 Linux 内核恐慌,但可以通过 COM 端口看到?
Why can't I see the full Linux kernel panic inside my terminal in display, but can through the COM-port?
有些情况下需要查看 Linux 内核崩溃的完整日志。
但往往不能通过显示中的常规终端完成。
我认为它应该通过 COM 端口完成,但无法弄清楚:
我该怎么做?
通过 COM 端口工作正常,但在我的显示器中通过终端工作不正常的原因是什么?
UPD:我使用基于 debian 的自定义 Linux(4.9 内核)和 HDMI 显示器。
相关:How to get a Linux panic output to a USB serial console when system has also a display adapter
简单的直接连接控制台/VTY 使用显卡将字符字节(0 - 255)转换为显示字符单元。 80x25 是一种常见格式。这对于崩溃的内核来说非常简单且不难管理。只是复制一些内存。
图形控制台更加复杂,因为内核现在必须定位字符的字体位图并将位图复制到显示器上。它还需要处理带有更多内存副本的滚动,或 IOCTL 调用图形驱动程序等。
Gnome 或 KDE GUI 会话中的控制台 运行 非常复杂。内核根本不参与绘制,也不知道如何绘制。
输出过程越复杂,已经崩溃的内核成功管理它的可能性就越小。
串口输出再次变得非常简单。带缓冲的 UART 使其变得有点复杂,但如果崩溃的内核想要忽略它并以 9,600 线速率简单地输出字节,那么任何串行端口都可以使用它而不需要缓冲区或中断管理。
有些情况下需要查看 Linux 内核崩溃的完整日志。
但往往不能通过显示中的常规终端完成。
我认为它应该通过 COM 端口完成,但无法弄清楚:
我该怎么做?
通过 COM 端口工作正常,但在我的显示器中通过终端工作不正常的原因是什么?
UPD:我使用基于 debian 的自定义 Linux(4.9 内核)和 HDMI 显示器。
相关:How to get a Linux panic output to a USB serial console when system has also a display adapter
简单的直接连接控制台/VTY 使用显卡将字符字节(0 - 255)转换为显示字符单元。 80x25 是一种常见格式。这对于崩溃的内核来说非常简单且不难管理。只是复制一些内存。
图形控制台更加复杂,因为内核现在必须定位字符的字体位图并将位图复制到显示器上。它还需要处理带有更多内存副本的滚动,或 IOCTL 调用图形驱动程序等。
Gnome 或 KDE GUI 会话中的控制台 运行 非常复杂。内核根本不参与绘制,也不知道如何绘制。
输出过程越复杂,已经崩溃的内核成功管理它的可能性就越小。
串口输出再次变得非常简单。带缓冲的 UART 使其变得有点复杂,但如果崩溃的内核想要忽略它并以 9,600 线速率简单地输出字节,那么任何串行端口都可以使用它而不需要缓冲区或中断管理。