如何为 KVM 来宾启用 Virsh 控制台访问

创建 KVM 来宾后,我可以通过 SSH、VNC 客户端、Virt-viewer 访问它们, 虚拟管理器座舱 网络控制台等,但我无法使用 virsh console 命令。 对于那些想知道的人来说, virsh console 命令用于从主机系统连接到客户机的控制台。 查看 KVM 文档后,我发现我们应该在 KVM 来宾系统中启用串行控制台,以便为 KVM 来宾启用 virsh 控制台访问。

我的 Ubuntu 20.04 系统中运行着 CentOS 8 虚拟机。

$ virsh list
 Id   Name      State
-------------------------
 1    centos8   running

我尝试使用以下命令访问 CentOS 8 VM 的控制台:

$ virsh console centos8

我得到了这个输出:

Connected to domain centos8
Escape character is ^]
在 Linux 中使用 virsh 命令访问 K​​VM 来宾的控制台

它说我已连接到 centos8 虚拟机,但我没有看到虚拟机的控制台。 我无法通过这个屏幕。 它一直显示这个空白屏幕,直到我按手动退出它 CTRL+] 钥匙。 如果您曾经遇到过这种情况,只需按如下所述启用串行控制台服务。

为 KVM 来宾启用 Virsh 控制台访问

就像我已经提到的,您必须在您的客户机中添加一个串行控制台才能从主机系统访问其 virsh 控制台。

为此,请通过 SSH 或 Virt-manager 或 Cockpit 登录到您的客户机,然后运行以下命令来启用和启动串行控制台:

# systemctl enable [email protected]
# systemctl start [email protected]
为 KVM 虚拟机启用 virsh 控制台访问

请注意 以上命令应在 KVM 来宾系统(虚拟机)中运行,不在 KVM 主机中。

就是这样。 我们在来宾中启用了串行控制台接口。

您可以通过查看 VM 的配置 XML 文件来验证它:

$ virsh edit centos8

如果启用了串行控制台,您将看到以下行:

    <serial type="pty">
      <target type="isa-serial" port="0">
        <model name="isa-serial"/>
      </target>
    </serial>
    <console type="pty">
      <target type="serial" port="0"/>
    </console>

关闭 XML 文件并退出来宾计算机。

现在使用命令从主机启动来宾系统的 virsh 控制台:

$ virsh console centos8

您将收到以下消息:

Connected to domain centos8
Escape character is ^]

再次按 ENTER 并输入您的用户名和密码以连接到访客计算机:

KVM 虚拟机的 virsh 控制台KVM 虚拟机的 virsh 控制台

您现在位于来宾计算机的控制台中。 开始使用它。 您可以随时通过按下切换回主机控制台 “CTRL+]” 键。