访问 Ubuntu 16.04 KVM 来宾的控制台

Pro*_*ter 4 kvm tty console

当我将 Debian 8 添加到我的KVM 管理工具时,我发现除非我添加console=ttyS0到 grub 引导配置中,否则我无法访问控制台。这不是很好,但它奏效了。我正在将 Ubuntu 16.04 添加到管理工具中,这次在安装来宾时遇到了同样的问题,但是当我在连接到控制台的情况下重新启动实例时,我无法再看到 grub 菜单选项。因此,我无法实施解决方法。

我设法通过arp -an在虚拟机管理程序上运行并连接到 KVM 桥上的 IP 来找到来宾实例的 IP 地址,直到找到正确的 IP 地址。这使我能够确认来宾已正确安装并运行。我希望能够连接到控制台sudo virsh console [guest ID],以防网络出现问题或 openssh 突然决定停止工作。我需要做什么才能从虚拟机管理程序连接到来宾 ubuntu 16.04 控制台?

我的直觉是,我只需要调整sudo virsh edit [guestID]. 目前我有:

...
<serial type='pty'>
  <target port='0'/>
</serial>
<console type='pty'>
  <target type='serial' port='0'/>
</console>
...
Run Code Online (Sandbox Code Playgroud)

额外信息

  • 使用内核 4.2.0-36-generic 的 Ubuntu 14.04 KVM 管理程序
  • 虚拟 1.2.2

小智 9

谢谢@Programster 解决方案对我有用。因为我什至没有 SSH 访问权限,所以我必须安装和使用 virt-edit。

sudo apt install libguestfs-tools
sudo virt-edit -d myVM /boot/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)

替换的所有实例quietquiet console=ttyS0在的grub.cfg文件,并开始我的虚拟机控制台连接。

virsh start myVM && virsh console myVM
Run Code Online (Sandbox Code Playgroud)

不要忘记在登录后根据@programster 的回答编辑和更新 grub。


Pro*_*ter 7

2017 年 3 月 13 日更新

对于已经处于上述情况的人,您可以使用下面的原始答案修复现有的客人。但是,对于那些不想再经历这种痛苦的人,您可以添加以下内容,以便在 kickstart 文件的 %post 部分:

%post --nochroot
(
    sed -i "s;quiet;quiet console=ttyS0;" /target/etc/default/grub
    sed -i "s;quiet;quiet console=ttyS0;g" /target/boot/grub/grub.cfg
) 1> /target/root/post_install.log 2>&1
%end
Run Code Online (Sandbox Code Playgroud)

这将确保对 grub 进行必要的更改,如下所述,以便您通过使用 kickstart 文件部署的新来宾不会遇到此问题。

原答案

对于那些在找到arp -an主机上使用的 IP 后设法通过 SSH连接的人,一旦连接到来宾,您可以执行以下步骤(从本页底部开始)。

编辑 grub 配置文件:

sudo vim /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

将文本添加console=ttyS0GRUB_CMDLINE_LINUX_DEFAULT参数中,如下所示:

在此处输入图片说明

然后通过执行以下命令使用您的更改重建 grub 菜单:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

现在您应该能够使用virsh console [guest ID].

随着未来的内核添加到系统中,这将继续工作,但我更希望有一个解决方案,它不需要我首先对来宾进行 SSH 访问