我有一个运行 CentOS 7 的 Hyper-V 客户机。当客户机崩溃并打印内核 Oops 消息时,是否可以捕获写入控制台的文本?请注意,该消息不会写入 dmesg,因此无法在下次重新启动时检索。
答案1
要将串行端口添加到虚拟机,请在 PowerShell 中创建一个(或多个)命名管道。请注意,必须“以管理员身份运行”PowerShell 才能正常工作。此处的示例使用名为 的虚拟机dv0
。
PS C:\WINDOWS\system32> Get-VMComPort -VMName dv0
VMName Name Path
------ ---- ----
dv0 COM 1
dv0 COM 2
PS C:\WINDOWS\system32> Set-VMComPort -VMName dv0 -Path \\.\pipe\dv0-com1 -Number 1
PS C:\WINDOWS\system32> Get-VMComPort -VMName dv0
VMName Name Path
------ ---- ----
dv0 COM 1 \\.\pipe\dv0-com1
dv0 COM 2
在 Linux VM 中,通过 grubby 添加控制台设置COM1
(又名ttyS0
):
[root@dv0 ~]# grubby --args="console=tty0 console=ttyS0=115200" --update-kernel `grubby --default-kernel`
PuTTY 可以捕获命名管道的输出。在会话选项中,使用 Serial 作为目标、\\.\pipe\dv0-com1
Serial 线路,并使用 115200 作为 Speed,以匹配 Linux 控制台设置。由于命名管道是以管理员身份创建的,因此 PuTTY 也必须“以管理员身份运行”。