如何在qemu中向QMP-tcp服务器公开qemu来宾代理QMP功能



我使用qemu-system-x86_64运行vm,通过TCP连接公开QMP命令,方法如下:

qemu-system-x86_64 
-smp 4 -m 4096 
-vga std 
-display vnc=:0 
-netdev user,id=n0 
-device e1000,netdev=n0 
-usb -device usb-tablet 
-qmp tcp:localhost:8124,server,nowait 
-k en-us 
-boot d 
-hda /filesystem/filesystem.img

一切都很好,因为我可以通过端口8124上的TCP套接字连接在本地向qemu发送QMP命令。

然后,我在vm(Ubuntu 21.04桌面(上安装了qemu guest代理,并以这种方式创建了quemu guest代理服务所需的virtio端口:

qemu-system-x86_64 
-smp 4 -m 4096 
-vga std 
-display vnc=:0 
-netdev user,id=n0 
-device e1000,netdev=n0 
-chardev socket,path=/tmp/qga.sock,server,nowait,id=qga0 
-device virtio-serial 
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 
-usb -device usb-tablet 
-qmp tcp:localhost:8124,server,nowait 
-k en-us 
-boot d 
-hda /filesystem/filesystem.img

quemu来宾代理systemd服务已按预期启动并运行(显然是在本地套接字上,而不是通过TCP(。

现在我想通过TCP套接字连接查看qemu来宾代理QMP功能。我怎样才能做到这一点?

根据官方指南,我必须以这种方式更改chardev-chardev qga_proxy,id=qga0 ,但它不起作用。该指南中的信息似乎已过时,因为目前不支持此命令。它抛出错误:qemu-system-x86_64:-charddev-qga_proxy,id=qga0:"qga_proxy"不是有效的字符驱动程序名称

通过TCP套接字公开来宾代理QMP命令的正确方法是什么?

谢谢。

您只需将virtio串行设备与TCP chardev关联即可。

Iow,替换:-chardev socket,path=/tmp/qga.sock,server,nowait,id=qga0(unix套接字(-chardev socket,id=qga0,host=localhost,port=9876,server=on(tcp套接字(。

然而,qga_proxy从未发生过,它只是维基上的一些粗略想法。

最新更新