从 Hyper-V 客户机捕获串行控制台文本

从 Hyper-V 客户机捕获串行控制台文本

我有一个运行 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-com1Serial 线路,并使用 115200 作为 Speed,以匹配 Linux 控制台设置。由于命名管道是以管理员身份创建的,因此 PuTTY 也必须“以管理员身份运行”。

相关内容