如何使用云映像虚拟机为 KVM 启用 vnc 控制台?

如何使用云映像虚拟机为 KVM 启用 vnc 控制台?

我正在尝试从 Ubuntu Cloud 镜像创建自定义镜像,具体来说https://cloud-images.ubuntu.com/minimal/releases/impish/release/ubuntu-21.10-minimal-cloudimg-amd64.img

使用 virsh vncdisplay 和 VNC Viewer 我只能从 grub 获取初始启动输出,但无法获取操作系统控制台。

除了 VNC 控制台显示之外,其他一切都正常。我曾想过我需要为控制台设置串行输出,但这似乎也无济于事。在创建映像期间,我修改了 GRUB_CMDLINE_LINUX_DEFAULT

#!/bin/bash

KERNEL_OPTIONS=(
 'console=tty1'
 'console=ttyS0,115200n8'
)


#Replace default cmdline args with KERNEL_OPTIONS, to redirect logs to serial console
sudo sed -i -e \
    "s/.*GRUB_CMDLINE_LINUX_DEFAULT=\"\(.*\)\"/GRUB_CMDLINE_LINUX_DEFAULT=\"${KERNEL_OPTIONS[*]}\"/" \
    /etc/default/grub.d/50-cloudimg-settings.cfg

#Update grub to persist the change
sudo update-grub

有谁让 vnc 控制台显示与 Ubuntu 云镜像一起工作过吗?

在此处输入图片描述

答案1

您需要为虚拟机设置串行控制台。这可以通过将以下内容添加到虚拟机的 XML 定义中来完成:

<serial type='pty'>
  <target port='0'/>
</serial>

<console type='pty' tty='/dev/pts/1'>
  <source path='/dev/pts/1'/>
  <target type='serial' port='0'/>
</console>

您还需要将以下内容添加到/etc/default/grub文件中:

GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8"

之后,您应该能够在 VNC 查看器中看到控制台输出。

相关内容