
经测试,OpenWRT开启Qemu代理反而会造成无法通过PVE控制台操作;LEDE和Windows无此问题。
原因如下:
QEMU代理是一个运行在虚拟机里面的程序,主机可以直接通过qemu-guest-agent获取虚拟机的运行状态,比如IP地址、进程列表等,还可以直接在虚拟机里执行命令。如果开启了这个功能,虚拟机中需要安装相对应的qemu-ga。
实际测试过程中,编译内核的时候把qemu-ga一起编译进去,qemu-ga可以正常运行,主机也可以正确获得虚拟机的信息,但是,还是无法关机。经过分析发现,PVE的关机只是在虚拟机里执行/sbin/shutdown,而OpenWRT的命令为/sbin/poweroff。
如果关闭了QEMU代理的话,主机控制虚拟机的方式就会使用最底层的ACPI信号来发送关机命令,这样就解决问题了。