在修补Linux VM时,我经常会遇到内核崩溃,这会用我不了解的东西推高所有有用的输出,这可能对我没有帮助。
恐慌大多发生在该initramfs
阶段。我正在使用VirtualBox
。
普通Shift+ Pg Up无效(以我为例)。
还有另一种方法可以向上滚动并查看以前生成的内容吗?
在修补Linux VM时,我经常会遇到内核崩溃,这会用我不了解的东西推高所有有用的输出,这可能对我没有帮助。
恐慌大多发生在该initramfs
阶段。我正在使用VirtualBox
。
普通Shift+ Pg Up无效(以我为例)。
还有另一种方法可以向上滚动并查看以前生成的内容吗?
Answers:
串行端口
该串行端口是一个古老而可靠的通信协议的硬件Linux内核支持,最仿真模拟。
您可以将内核消息流式传输到主机文件或通过它进行控制台:
VirtualBox:如何在启动时捕获整个内核崩溃 堆栈溢出
QEMU:
这是重现该问题的最小设置:https : //github.com/cirosantilli/linux-kernel-module-cheat/blob/b366bac0c5410ceef7f2b97f96d93d722c4d9ea6/kernel_module/panic.c
真正的硬件:大多数现代笔记本电脑上都没有暴露串行端口,这真是可惜...但是在台式机上,它看起来像这样:
来源。
在Raspberry Pi上:
更多详细信息,请参见:Linux中的ttys0,ttyUSB0和ttyAMA0有什么区别?
串行替代
在下面甚至提到了一些更高级的方法:确定Linux内核崩溃的原因| Unix和Linux堆栈交换
netdump:通过网络发送跟踪。
假设恐慌没有破坏网络,这比串行更有可能。
与串行相比,优点是:
适用于没有串行暴露的系统,例如现代笔记本电脑
串行电缆的最大电线长度非常有限,如果要将公司的所有董事会都放在一个远程的房间中以在开发人员之间共享资源,这将是一个问题。
有与以太网服务器,我反而建议,如果你的目标暴露序列,例如但是串行连接器这一项:
kdump:引导辅助Linux内核,该内核检查受惊的内核。可能出什么问题了?
这些方法更灵活,但可靠性较低。
您正在使用什么系统管理程序?
Shift+ Pg Up在几乎所有情况下都是正确的,但如果虚拟机挂起或无法完全启动,则可能无法正常工作。
如果是Mac,则:“在Macbook上按Shift + Fn D-pad上或下可滚动”。这来自于您如何在Linux服务器(终端)上上下滚动?| 堆栈溢出