使用 -ngraphic 运行 qemu 时如何将 Ctrl-C 传递给来宾?

使用 -ngraphic 运行 qemu 时如何将 Ctrl-C 传递给来宾?

我按照以下方式配置了 Qemu 的 grub:

GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial"
GRUB_CMDLINE_LINUX="..console=ttyS0"

并使用命令行选项运行该qemu过程-nographic。这些允许将当前终端用于串行控制台和qemu监视器控制台。然而现在,每当我在正在运行的虚拟机内按Ctrl+时,它都会被拦截并关闭进程。Cqemu

我该如何传递Ctrl+C或涉及 Qemu 的任何其他按键CTRL

答案1

在 shell 中,运行 qemu 之前,运行“stty intr ^]”将中断键从 ^c 更改为 ctrl-]

这样,ctrl-c 将被传递到 qemu,但您仍然可以通过按 ctrl-] 来中断 qemu 本身

答案2

您可以尝试使用该sendkey命令-monitor stdio。尽管显然该-display none -serial mon:stdio选项应该传递Ctrlc客人。

您还可以创建一个监视器套接字,像这样:

qemu -display none -monitor unix:/tmp/qemu-monitor,server,nowait

然后,连接到监视器以使用 sendkey,socat如下所示:

socat - UNIX-CONNECT:/tmp/qemu-monitor

您现在可以发送密钥,如下所示:

(qemu) sendkey ctrl-c
sendkey ctrl-c

答案3

删除-monitor或添加-serial mon:stdio

从 QEMU 2.10.1 开始,Ubuntu 17.10Ctrl-C在使用-nographic.

但是,如果您也使用该-monitor选项,行为会发生变化,并且会Ctrl-C杀死 QEMU。

这是-monitor通常的使用方式:如何使用-ngraphics切换到QEMU控制面板? |超级用户

如果需要-monitor,可以使用 Ctrl+C 恢复-serial mon:stdio如何使用 -ngraphic 和 -monitor 运行 qemu,但仍然能够向来宾发送 Ctrl+C 并使用 Ctrl+AX 退出? |堆栈溢出

相关内容