我正在使用panda(基于qemu的平台)来分析ubuntu。 我在服务器设备中运行它,因此我只能通过远程终端进行操作。
Panda 需要 stdio 才能与虚拟机一起操作。正常情况下命令如下:
panda-system-x86_64 -m 1G -monitor stdio -show-cursor ubuntu-2204.qcow2 -loadvm test
当我在带有 GUI 的系统下运行它时,它将打开虚拟机和带有 qemu 监视器 的终端来进行操作。
但是当我使用“-ngraphic”禁用 GUI 时
panda-system-x86_64 -m 1G -monitor stdio -show-cursor ubuntu-2204.qcow2 -loadvm test -nographic
当我删除“-monitor stdio”时
panda-system-x86_64 -m 1G -show-cursor ubuntu-2204.qcow2 -loadvm test -nographic
它将进入guest ubuntu系统的终端。
此时,我需要用(ctrl c-a)将其更改为qemu监视器。
我认为可能有一些方法可以解决这个问题:
p = subprocess.Popen(cmd, stdin = subprocess.PIPE, stdout = panda_stdout, stderr = panda_stderr)
'cmd' 是运行上面的 panda 的命令。
有没有办法将'stdio'更改为其他与客户系统一起操作的方式以避免冲突?QEMU 的“-ngraphic”选项是一种“做我的意思”类型的选项,它可以同时执行很多操作:它关闭 GUI 窗口,并且还使 stdio 成为多路复用串行 + QEMU 监视器(以及其他一些不太重要的事情)。如果您不想要所有这些事情,通常最好单独控制所有行为。
仅禁用 GUI 窗口而不执行任何其他操作的选项是“-display none”。然后,您可以使用“-monitor stdio”将监视器正常放置在终端上。
如果您没有图形终端,您还需要弄清楚如何与访客交互。如果来宾支持串行终端,您可以使用某些 -serial 选项来执行此操作,或者您可以将来宾配置为接受 ssh 连接并通过 ssh 进入其中。或者,如果您想要的是能够在网络连接上正常工作的 GUI 显示,您可以考虑使用 VNC 或 Spice 进行图形显示。