访问qemu套接字时拒绝libvirt Apparmor权限

时间:2018-07-19 22:44:10

标签: virtual-machine libvirt apparmor virsh

我试图使用qemu的ivshmem设备,运行服务器后,我可以使用以下命令成功创建虚拟机:

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创建虚拟机时,出现错误:

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

我在Using IVSHMEM with libvirt virt-manager

处看到了相同的问题

由于无法创建虚拟机,在libvirt-<uuid>下没有/etc/apparmor.d/libvirt文件,因此我无法按照解决方案进行操作,并且我无法更改AppArmor模式以向{{1}投诉}。

有人可以帮助我在创建文件之前弄清楚如何更改投诉模式吗?非常感谢你!

1 个答案:

答案 0 :(得分:0)

您可以将 AppArmor 置于 libvirt 的抱怨模式:

aa-complain /usr/sbin/libvirtd

这会禁用安全性,因此可能不是最佳解决方案。