背景:自己使用qemu的源码编译了一个qemu-guest-agent服务的二进制文件qemu-ga,替换掉了虚拟机中的/usr/bin/qemu-ga文件,然后使用systemctl start qemu-guest-agent命令启动,服务直接异常退出。
报错:使用journalctl -u qemu-guest-agent能够看到具体报错是:ailed to write persistent state to /usr/bin/../var/run/qga.state: Failed to create file “/usr/bin/../var/run/qga.state.CRVZF2”: No such file or directory。
原因:产生这个错误的原因是是在编译qemu-ga的时候configure没有指定使用的--localstatedir目录,如果不指定的话,默认会使用../var/run这个目录作为state目录,如果在虚拟机中替换了/usr/bin/qemu-ga,那么当启动qemu-guest-agent服务的时候会去/usr/bin/../var/run这个目录中创建qa.state文件,但是这个目录默认是不存在的,所以就会产生找不到目录的错误。
解决方法:在编译qemu-ga的时候,./configure执行时添加--localstatedir=/var参数即可。