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


11

我通过以下方式配置Qemu的grub:

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

qemu使用-nographic命令行选项运行该过程。这些使当前终端可以用于串行控制台和qemu监视器控制台。但是现在,只要我在运行的VM中按Ctrl+ C,它就会被拦截qemu并关闭进程。

我应该如何通过Ctrl+ C或涉及CTRLQemu的任何其他击键?

Answers:


16

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

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


2
也可以覆盖Ctrl-Z(背景)stty susp ^]。对于Ctrl-\(退出),使用stty quit ^]。对于单个字符有多个定义,这是优先顺序:intr quit susp。
Lekensteyn

4

您可以尝试使用使用sendkey命令-monitor stdio。虽然显然,该-display none -serial mon:stdio选项应将Ctrl+ c传递给来宾。

您还可以创建一个监视器套接字,如下所示:

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

谢谢。如果我在PuTTY终端中运行qemu,您能告诉我如何“跳入” qemy监视器控制台(即,应按什么击键)?
2014年

在GUI中-按Ctrl + Alt,然后按Shift + 2可以切换到显示器,或者按Shift-1可以切换回来宾OS。这在控制台中不起作用。在那里,您可以使用套接字方法,然后打开另一个screen窗口并通过进行连接socat。您也可以改用-monitor stdio重定向到您的终端。
Criveti Mihai 2014年

3

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

从QEMU 2.10.1开始,Ubuntu 17.10 Ctrl-C在使用时会默认传递给来宾,而不会出现问题-nographic

但是,如果您还使用该-monitor选项,则行为会更改,并Ctrl-C杀死QEMU。

这就是-monitor通常被用于:如何切换到与-nographics QEMU的控制面板?| 超级用户

如果需要-monitor,可以使用-serial mon:stdio以下命令返回Ctrl + C :如何使用-nographic和-monitor运行qemu,但仍然能够将Ctrl + C发送给来宾并使用Ctrl + AX退出?| 堆栈溢出

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.