如何将 QEMU 串行输出重定向到文件和终端或端口?

Cir*_*郝海东 3 qemu

我希望既能通过命令行与系统交互,又能同时将输出输出到文件中。

如果我做:

qemu-sysem-x86_64 -serial stdio |& tee file
Run Code Online (Sandbox Code Playgroud)

然后它大部分工作,但我想避免任何 Bash 操作,让 QEMU 为我做繁重的工作。例如,我正在使用 Python,在tee那里实现一个可靠的并不是那么简单。

如果我做:

qemu-sysem-x86_64 -serial file:myfile
Run Code Online (Sandbox Code Playgroud)

它重定向到文件,我无法提供任何输入。

有没有一种方法,以“结合”都file:stdio一个单一的-serial

多个-serial条目只是创建多个串行端口,而不是修改一个。

如果它与 telnet 一起使用,我也很感兴趣:

-serial tcp::1234,server,nowait
Run Code Online (Sandbox Code Playgroud)

http://lists.nongnu.org/archive/html/qemu-discuss/2018-11/msg00011.html

Jan*_*mek 6

最近,我遇到了完全相同的问题并找到了解决方案:

QEMU 3.1.0的文件,你可以使用一个chardev带有选项stdio,并logfile和您重定向serial到它。

qemu-system-x86_64 -chardev stdio,id=char0,logfile=serial.log,signal=off \
  -serial chardev:char0
Run Code Online (Sandbox Code Playgroud)

此外,如果您在 中使用mux=on选项chardev,您可以同时将监视器 ( mon)、另一个serial或其他支持chardev后端的接口重定向到其中:

qemu-system-x86_64 -chardev stdio,id=char0,mux=on,logfile=serial.log,signal=off \
  -serial chardev:char0 -mon chardev=char0
Run Code Online (Sandbox Code Playgroud)

请参阅文档中的示例。上面的链接。