如何向 运行 qemu 实例发送命令
How to send commands to running qemu instance
如何将 loadvm 命令发送到 windows 10 机器上的 qemu 实例 运行?。我想在虚拟机 运行 时加载快照。我也不想使用 Qemu 监视器 window,我想从我的 c# 项目中命令 Qemu。
要从另一个程序以编程方式控制 QEMU,您需要:
- 在启动 QEMU 时创建一个 QMP 监视器连接,您的程序可以与之对话(您可以让它在 TCP 套接字上侦听,或者(至少在 Linux 上)您可以将其设置为使用启动 QEMU 时传递给它的文件描述符)
- 从您的程序连接到该监视器并向其发送命令
QMP 在功能上类似于 HMP 'human monitor',但它是为软件使用而设计的:它是一种 JSON 格式协议,因此响应更容易解析,并且是关于向后兼容性的保证(人类监控协议没有做到这一点)。 QMP 是像 libvirt 这样的程序控制 QEMU 的方式。
有关详细信息,请参阅 introduction to QMP and the QMP reference manual。
注意:请记住,任何可以连接到 QMP 监视器的东西都有效地完全控制了 QEMU 进程,包括能够接管它和 运行 任意代码。因此,保护监视器连接非常重要,这样未经授权的用户就无法访问它(例如,通过使用具有文件系统权限的 UNIX 套接字将其限制为 运行 是 QEMU 进程的用户,或通过使用文件描述符)。绝对不要使用暴露在互联网上的 TCP 套接字。
如何将 loadvm 命令发送到 windows 10 机器上的 qemu 实例 运行?。我想在虚拟机 运行 时加载快照。我也不想使用 Qemu 监视器 window,我想从我的 c# 项目中命令 Qemu。
要从另一个程序以编程方式控制 QEMU,您需要:
- 在启动 QEMU 时创建一个 QMP 监视器连接,您的程序可以与之对话(您可以让它在 TCP 套接字上侦听,或者(至少在 Linux 上)您可以将其设置为使用启动 QEMU 时传递给它的文件描述符)
- 从您的程序连接到该监视器并向其发送命令
QMP 在功能上类似于 HMP 'human monitor',但它是为软件使用而设计的:它是一种 JSON 格式协议,因此响应更容易解析,并且是关于向后兼容性的保证(人类监控协议没有做到这一点)。 QMP 是像 libvirt 这样的程序控制 QEMU 的方式。
有关详细信息,请参阅 introduction to QMP and the QMP reference manual。
注意:请记住,任何可以连接到 QMP 监视器的东西都有效地完全控制了 QEMU 进程,包括能够接管它和 运行 任意代码。因此,保护监视器连接非常重要,这样未经授权的用户就无法访问它(例如,通过使用具有文件系统权限的 UNIX 套接字将其限制为 运行 是 QEMU 进程的用户,或通过使用文件描述符)。绝对不要使用暴露在互联网上的 TCP 套接字。