我使用 virt-install 创建了一个虚拟机,使用 Ubuntu 14.04.01 LTS 服务器 ISO 作为安装介质。在安装阶段,我通过图形控制台连接到虚拟机。
现在我的虚拟机正在运行:我可以 ssh 连接它,而且它运行正常。我可以使用以下命令跟踪启动过程:
virsh console my-vm
但是我看不到登录提示。如何才能访问通常通过 PTY 分配的登录提示?
答案1
可以使用串行控制台界面直接访问 KVM 客户机,在这种情况下,无需设置桥接网络、SSH 等。通过串行控制台访问提供了另一种访问服务器的方法,可以补充或替代默认的 VNC 访问。
这是使用virsh
libvirt 的 shell 接口实用程序完成的。
- 检查控制台设备是否已定义:
virsh ttyconsole my_vm
如果显示输出(例如 /dev/pts/41),则表明 Guest 已经有控制台设备。
否则,用 virsh edit 定义一个。下面是要添加到里面的示例<device></device>
。详情请参考 libvirt XML 格式。
<console type='pty'>
- 在客户机中配置串行控制台 首先,我们需要在客户机中配置一个串行控制台,以便它接受连接:
这是(guest)Ubuntu 9.10(Karmic)及更高版本的配置方法。
sudo editor /etc/init/ttyS0.conf
添加配置:
# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -L 115200 ttyS0 xterm
- 运行以下命令启动串行控制台(或重新启动虚拟机):
sudo start ttyS0
这里我们使用“xterm”作为终端类型,如果我们使用 gnome-terminal(或 xterm)实例进行连接,这种方法效果很好。最好将其设置为与将用于连接的终端类型相匹配。您可以在将用于连接的主机/客户端终端中使用此命令找到它:
echo $TERM
例如,如果您正在运行 screen,它是“screen”,对于 byobu 它是“screen-bce”,等等。
当您已经连接到控制台时,您也可以临时设置变量:
export TERM=screen
- 使用 virsh 连接
首先我们连接到(本地)qemu 会话:
virsh -c qemu:///session
(这是可选的,如果你不想使用 virsh 控制台,你可以简单地virsh
在 bash 中添加命令。例如virsh start my_vm
,virsh console my_vm
等等)
现在在 virsh shell 中启动虚拟机:
start my_vm
当它启动后连接到控制台:
console my_vm
按回车键获取登录提示,并照常登录(请注意,即使未显示登录提示,用户名输入也有效)。
你在!
其他说明
用于Ctrl + ]
退出控制台。
如果控制台行为异常或显示不正确,请检查 TERM 变量是否设置正确(参见上文)。
如果终端似乎切断了输出的顶部,请将其更改为具有 80x24 的可视区域,例如在 byobu 中,这意味着您需要考虑状态栏并将窗口本身设置为 80x26
这套说明书被厚颜无耻地抄袭自https://help.ubuntu.com/community/KVM/Access