在 VM 中访问 pty 登录提示

在 VM 中访问 pty 登录提示

我使用 virt-install 创建了一个虚拟机,使用 Ubuntu 14.04.01 LTS 服务器 ISO 作为安装介质。在安装阶段,我通过图形控制台连接到虚拟机。

现在我的虚拟机正在运行:我可以 ssh 连接它,而且它运行正常。我可以使用以下命令跟踪启动过程:

virsh console my-vm

但是我看不到登录提示。如何才能访问通常通过 PTY 分配的登录提示?

答案1

可以使用串行控制台界面直接访问 KVM 客户机,在这种情况下,无需设置桥接网络、SSH 等。通过串行控制台访问提供了另一种访问服务器的方法,可以补充或替代默认的 VNC 访问。

这是使用virshlibvirt 的 shell 接口实用程序完成的。

  1. 检查控制台设备是否已定义:

virsh ttyconsole my_vm 如果显示输出(例如 /dev/pts/41),则表明 Guest 已经有控制台设备。

否则,用 virsh edit 定义一个。下面是要添加到里面的示例<device></device>。详情请参考 libvirt XML 格式。

<console type='pty'>

  1. 在客户机中配置串行控制台 首先,我们需要在客户机中配置一个串行控制台,以便它接受连接:

这是(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
  1. 运行以下命令启动串行控制台(或重新启动虚拟机):

sudo start ttyS0

这里我们使用“xterm”作为终端类型,如果我们使用 gnome-terminal(或 xterm)实例进行连接,这种方法效果很好。最好将其设置为与将用于连接的终端类型相匹配。您可以在将用于连接的主机/客户端终端中使用此命令找到它:

echo $TERM

例如,如果您正在运行 screen,它是“screen”,对于 byobu 它是“screen-bce”,等等。

当您已经连接到控制台时,您也可以临时设置变量:

export TERM=screen

  1. 使用 virsh 连接

首先我们连接到(本地)qemu 会话:

virsh -c qemu:///session(这是可选的,如果你不想使用 virsh 控制台,你可以简单地virsh在 bash 中添加命令。例如virsh start my_vmvirsh console my_vm等等)

现在在 virsh shell 中启动虚拟机:

start my_vm

当它启动后连接到控制台:

console my_vm

按回车键获取登录提示,并照常登录(请注意,即使未显示登录提示,用户名输入也有效)。

  1. 你在!

  2. 其他说明

用于Ctrl + ]退出控制台。

如果控制台行为异常或显示不正确,请检查 TERM 变量是否设置正确(参见上文)。

如果终端似乎切断了输出的顶部,请将其更改为具有 80x24 的可视区域,例如在 byobu 中,这意味着您需要考虑状态栏并将窗口本身设置为 80x26

这套说明书被厚颜无耻地抄袭自https://help.ubuntu.com/community/KVM/Access

相关内容