C 如何以编程方式向QEMU来宾发送键盘事件?
假设我有一些预先存在的iso(例如,alpine linux)。我从C 如何以编程方式向QEMU来宾发送键盘事件?,c,qemu,C,Qemu,假设我有一些预先存在的iso(例如,alpine linux)。我从 qemu-system-x86_64 -enable-kvm -cdrom alpine-virt-3.5.0-x86_64.iso 此时,我想执行一些设置(并避免手动执行) 我想,实现这一点的一种方法是使用xdotool,但这不是很方便,因为整个Xorg会话都会被一个QEMU客户机占用 也许有更好的办法?可以通过QMP或QEMU C API完成吗?一种可能的方法是将控制台设置为串行,并告诉QEMU将来宾系统的串行端口重定向
qemu-system-x86_64 -enable-kvm -cdrom alpine-virt-3.5.0-x86_64.iso
此时,我想执行一些设置(并避免手动执行)
我想,实现这一点的一种方法是使用xdotool,但这不是很方便,因为整个Xorg会话都会被一个QEMU客户机占用
也许有更好的办法?可以通过QMP或QEMU C API完成吗?一种可能的方法是将控制台设置为串行,并告诉QEMU将来宾系统的串行端口重定向到主机的stdio:
qemu-system-x86_64 -enable-kvm -cdrom alpine-virt-3.5.0-x86_64.iso -append "console=ttyS0" -serial stdio
然后,您可以尝试在qemu进程的stdio上进行自定义设置。或者,您也可以使用侦听套接字并连接到它:-serial tcp::12345,server
最后,您应该努力使用用于自动设置的可能现有机制,例如Debian GNU/Linux等的预存文件,因为这样做可能非常容易出错。一种可能的方法是将控制台设置为串行,并告诉qemu将来宾系统的串行端口重定向到主机的stdio:
qemu-system-x86_64 -enable-kvm -cdrom alpine-virt-3.5.0-x86_64.iso -append "console=ttyS0" -serial stdio
然后,您可以尝试在qemu进程的stdio上进行自定义设置。或者,您也可以使用侦听套接字并连接到它:-serial tcp::12345,server
最后,您应该努力使用可能的现有机制来进行自动设置,例如Debian GNU/Linux等的预存文件,因为这样做可能非常容易出错