当我将 Debian 8 添加到我的KVM管理工具,我发现我console=ttyS0
除非我添加到 grub 启动配置中,否则无法访问控制台。这不是很好,但很有效。我正在将 Ubuntu 16.04 添加到管理工具中,这次安装来宾时也出现了同样的问题,但是当我在连接到控制台的情况下重新启动实例时,我无法再看到 grub 菜单选项。因此,我无法实施该解决方法。
我设法通过在虚拟机管理程序上运行并连接到 KVM 桥上的 IP 来找到来宾实例的 IP 地址,arp -an
直到找到正确的 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>
...
额外信息
- 使用内核 4.2.0-36-generic 的 Ubuntu 14.04 KVM 管理程序
- 维尔什1.2.2
答案1
谢谢@Programster 解决方案对我有用。由于我什至没有 SSH 访问权限,因此我必须安装并使用 virt-edit。
sudo apt install libguestfs-tools
sudo virt-edit -d myVM /boot/grub/grub.cfg
将grub.cfg 文件中的所有实例替换为quiet
并启动我的虚拟机以进行控制台连接。quiet console=ttyS0
virsh start myVM && virsh console myVM
登录后,不要忘记根据 @programster 答案编辑和更新 grub。
答案2
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
这将确保按如下所述对 grub 进行必要的更改,以便您通过使用 kickstart 文件部署的新来宾不会遇到此问题。
原答案
arp -an
对于那些在找到主机上使用的IP后设法通过SSH连接的人,您可以执行以下步骤(取自本页底部)一旦您连接到访客。
编辑grub配置文件:
sudo vim /etc/default/grub
将文本添加console=ttyS0
到GRUB_CMDLINE_LINUX_DEFAULT
参数中,如下所示:
然后通过执行以下命令使用您的更改重建 grub 菜单:
sudo update-grub
现在您应该能够使用virsh console [guest ID]
.
当未来的内核添加到系统中时,这将继续工作,但是我更希望有一个不需要我首先通过 SSH 访问来宾的解决方案。
答案3
按照 @Programster 的优秀答案中的建议,在安装后步骤中修复 grub 配置。以下是在其他一些情况下如何执行此操作。
使用 Debconf 预置文件安装 Ubuntu 16.04 时,请将其添加到您的预置文件中:
di preseed/late_command 字符串 ( \ sed -i "s;安静;安静控制台=ttyS0;" /目标/etc/default/grub; \ sed -i "s;quiet;quiet console=ttyS0;g" /target/boot/grub/grub.cfg \ ) 1> /target/root/post_install.log 2>&1
使用 Kickstart 安装 RHEL 7 或 CentOS 7 时,请将其添加到您的 kickstart 文件中:
%post --nochroot --log /mnt/sysimage/root/post.log ( sed -i "s;安静;安静控制台=ttyS0;" /mnt/sysimage/etc/default/grub sed -i "s;安静;安静控制台=ttyS0;g" /mnt/sysimage/boot/grub2/grub.cfg ) > /mnt/sysimage/root/post_install.log 2>&1 %结尾
答案4
一种更简单、更容易的方法红帽文档
grubby --update-kernel=ALL --args="console=ttyS0"
reboot