什么原因会阻止“virsh -c qemu:///system console guest1”的控制台输出?

什么原因会阻止“virsh -c qemu:///system console guest1”的控制台输出?

我在 Ubuntu 10.04 主机上运行 KVM。客户操作系统也是 Ubuntu 10.04。

我尝试使用“console”命令连接到客户机。看起来我可以建立连接,但没有输出。

$ sudo virsh -c qemu:///system console guest1
Connected to domain guest1
Escape character is ^]
(NOTHING HERE)
^]
$

我没有配置“串行”设备,但我有这些“控制台”设备。

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

这些对于控制台来说足够了吗,还是我还需要一个串行设备?

为了使 KVM 控制台工作,我需要做什么?

答案1

我确信您确实需要配置客户机以使用串行控制台。要实现此功能,您需要三件东西:

  1. 为客户机提供一个类型的虚拟串行设备pty(例如,在virt-manager虚拟机信息页面中添加一个)

  2. serial=tty0 console=ttyS0,115200n8通过添加引导参数(如into GRUB_CMDLINE_LINUXin )告诉内核将其用作输出/etc/default/grub;然后运行sudo update-grub

  3. (选修的)在 ttyS0 上放置一个 getty这样你就会得到登录提示

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507650了解更多信息。

答案2

一种可能性是您的虚拟机没有配置串行控制台。

virsh dumpxml guest1

将显示是否配置了串行控制台。应该有类似以下内容的内容

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

答案3

答案4

我刚刚遇到这个问题。

以下是主机(运行 KVM)上的 XML 配置:

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

我还必须在 VM 中的 /etc/default/grub.conf 中添加以下内容(附加到“kernel”命令):

kernel ..... serial=tty0 console=ttyS0,115200n8

最后,我通过添加“/etc/securetty”来保护 ttyS0,以便从这里启用 root 登录

vi /etc/securetty
ttyS0

你可能还需要弄乱你的 getty 设置(如另一个答案所述)

希望这可以帮助

相关内容