我试图使用qemu的ivshmem设备,运行服务器后,我可以成功地创建一个vm,命令是:
sudo qemu-system-x86_64 -m 1024 -hda testvm01.img -enable-kvm
-device ivshmem-doorbell,vectors=1,chardev=ivshmem
-chardev socket,path=/tmp/ivshmem_socket,id=ivshmem
然后我想使用libvirt来引导vm,我的配置文件如下:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
<name>testlinux1</name>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-bionic'>hvm</type>
</os>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/home/gavin/vms/testvm01.img'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
</devices>
<qemu:commandline>
<qemu:arg value='-device'/>
<qemu:arg value='ivshmem-doorbell,vectors=2,chardev=ivshmem'/>
<qemu:arg value='-chardev'/>
<qemu:arg value='socket,path=/tmp/ivshmem_socket,id=ivshmem'/>
</qemu:commandline>
</domain>
当我尝试用命令virsh create testlinux1.xml
创建vm时,我得到了错误:
error: Failed to start domain testlinux1
error: internal error: process exited while connecting to monitor: 2018-07-19T22:12:52.443682Z qemu-system-x86_64: -chardev socket,path=/tmp/ivshmem_socket,id=ivshmem: Failed to connect socket /tmp/ivshmem_socket: Permission denied
我在上看到了同样的问题:将IVSHMEM与libvirt-virt-manager 一起使用
我无法遵循那里的解决方案,因为我未能创建vm,/etc/apparmor.d/libvirt
下没有libvirt-<uuid>
文件,而且我无法更改AppArmor模式来抱怨sudo aa-complain libvirt-<uuid> //replace <uuid> with uuid of vm
。
有人能帮我在创建文件之前弄清楚如何更改模式以进行投诉吗?非常感谢!
您可以将AppArmor设置为libvirt:的抱怨模式
aa-complain /usr/sbin/libvirtd
这会禁用安全性,因此可能不是最佳解决方案。