CoreOS Image无法通过libvirt加载点火文件权限被拒绝

问题描述

我正在使用VM测试新的网络配置,并在系统上安装了libvirt和qemu。遵循Fedora CoreOS的文档以帮助入门。

已采取的步骤

  • 我已将用户更新为 kvm libvirt 组的成员
    data
  • 创建点火YAML并导出到JSON .ign文件
    > groups
    [ .. ] video kvm fuse libvirt
    
  • 直接使用文档运行kvm命令可以正常工作。我可以进入系统
  • libvirt能够使用原始CoreOS文档(https://coreos.com/os/docs/latest/booting-with-libvirt.html#virtual-machine-startup)中附带qemu命令的步骤生成XML。
    {"ignition":{"version":"3.1.0"},"passwd":{"users":[{ ...
    
  • 尝试将点火文件的权限设置为“ kvm”和“ libvirt”,而没有更改。当前所有使用libvirt的文件
    ...
    <qemu:commandline xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
      <qemu:arg value="-fw_cfg"/>
      <qemu:arg value="name=opt/com.coreos/config,file=/var/lib/libvirt/machine/main.ign"/>
    </qemu:commandline>
    
  • 机器已加载并显示在virt-manager中
    $ ls -l /var/lib/libvirt/machine/
    total 8
    -rw-r--r-- 1 root libvirt 2242 Sep 20 17:16 domain.xml
    -rwxr-xr-x 1 root libvirt  658 Sep 20 17:15 main.ign
    

唯一的问题是该计算机无法在virt-manager或virsh中运行:

$ virsh list --all
Id   Name      State
-----------------------------
-    machine   shut off

现在对做什么的想法已经不存在了。有人有主意吗?

解决方法

改为尝试

# mv main.ign /var/lib/libvirt/images/
# restorecon /var/lib/libvirt/images/main.ign

/var/lib/libvirt/images已获得适当许可,并标记了selinux以供VM访问。 /var/lib/libvirt/machines不是标准的libvirt目录,因此根据您创建它的方式,qemu进程可能无法访问。同样在Fedora上,qemu进程以“ qemu”用户而不是“ kvm”或“ libvirt”用户身份启动,因此也可能是由于该原因,但是如果文件位于/ var / lib / libvirt / images中并且具有全局读取权限那么我认为就足够了