当我将 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)
小智 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)
替换的所有实例quiet
与quiet console=ttyS0
在的grub.cfg文件,并开始我的虚拟机控制台连接。
virsh start myVM && virsh console myVM
Run Code Online (Sandbox Code Playgroud)
不要忘记在登录后根据@programster 的回答编辑和更新 grub。
对于已经处于上述情况的人,您可以使用下面的原始答案修复现有的客人。但是,对于那些不想再经历这种痛苦的人,您可以添加以下内容,以便在 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=ttyS0
到GRUB_CMDLINE_LINUX_DEFAULT
参数中,如下所示:
然后通过执行以下命令使用您的更改重建 grub 菜单:
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
现在您应该能够使用virsh console [guest ID]
.
随着未来的内核添加到系统中,这将继续工作,但我更希望有一个解决方案,它不需要我首先对来宾进行 SSH 访问。