从 Hyper-V 来宾捕获串行控制台文本

ctu*_*fli 6 console hyper-v

我有一个运行 CentOS 7 的 Hyper-V 客户机。当客户机出现紧急情况并打印内核 Oops 消息时,是否可以捕获写入控制台的文本?请注意,该消息不会写入 dmesg,因此在下次重新启动时无法检索。

ctu*_*fli 5

要向 VM 添加串行端口,请在 PowerShell 中创建一个(或多个)命名管道。请注意,PowerShell 必须“以管理员身份运行”才能正常工作。此处的示例使用名为 的 VM 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
Run Code Online (Sandbox Code Playgroud)

在 Linux VM 中,通过 grubby 添加控制台设置COM1(又名ttyS0):

[root@dv0 ~]# grubby --args="console=tty0 console=ttyS0=115200" --update-kernel `grubby --default-kernel`
Run Code Online (Sandbox Code Playgroud)

PuTTY 可以捕获命名管道的输出。在会话选项中,使用 Serial 作为目标、\\.\pipe\dv0-com1串行线路,使用 115200 作为速度,以匹配 Linux 控制台设置。由于命名管道是以管理员身份创建的,因此 PuTTY 也必须“以管理员身份运行”。