5.4. 打开虚拟机串口控制台

通过使用 virsh console 命令,可以连接到虚拟机(VM)的串行控制台。

但虚拟机有以下情况时很有用:

  • 没有提供 VNC 协议,因此没有为 GUI 工具提供视频显示。
  • 没有网络连接,因此无法使用 SSH 进行交互。

先决条件

  • 虚拟机必须配有一个串口控制台设备,如 console type='pty'。要进行验证,请执行以下操作:

    # virsh dumpxml vm-name | grep console
    
    <console type='pty' tty='/dev/pts/2'>
    </console>
  • 虚拟机必须在内核命令行中配置串口控制台。要进行验证,VM 上的 cat /proc/cmdline 命令输出应包含 console=ttyS0 。例如:

    # cat /proc/cmdline
    BOOT_IMAGE=/vmlinuz-3.10.0-948.el7.x86_64 root=/dev/mapper/rhel-root ro console=tty0 console=ttyS0,9600n8 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb

    如果没有在虚拟机中正确设置串口控制台,请使用 virsh 控制台连接到虚拟机,请将您连接到无响应的客户端控制台。但是,您仍然可以使用 Ctrl+] 快捷键退出无响应的控制台。

    • 要在虚拟机上设置串行控制台,请执行以下操作:

      1. 在虚拟机上启用 console=ttyS0 内核选项:

        # grubby --update-kernel=ALL --args="console=ttyS0"
      2. 清除可能会阻止您更改生效的内核选项。

        # grub2-editenv - unset kernelopts
      3. 重启虚拟机。

流程

  1. 在您的主机系统上,使用 virsh console 命令。如果 libvirt 驱动程序支持安全控制台处理,以下示例连接到 guest1 虚拟机:

    # virsh console guest1 --safe
    Connected to domain 'guest1'
    Escape character is ^]
    
    Subscription-name
    Kernel 3.10.0-948.el7.x86_64 on an x86_64
    
    localhost login:
  2. 您还可以使用与标准命令行界面相同的方法与 virsh 控制台互动。

其它资源

  • virsh 手册页