如何在 libvirt LXC guest 中设置直通 USB 设备的权限?

如何在 libvirt LXC guest 中设置直通 USB 设备的权限?

我在 libvirt 中有一个lxc类型 guest,我通过 USB 设备传递给它,如下所示:

<hostdev mode="subsystem" type="usb" managed="yes">
  <source>
    <vendor id="0x10c4"/>
    <product id="0xea60"/>
    <address bus="1" device="10"/>
  </source>
</hostdev>

设备显示如下/dev/bus/usb/001/010

crwx------ 1 root root 189, 9 Sep  5 23:21 /dev/bus/usb/001/010

添加这样的 udev 规则

SUBSYSTEM=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", GROUP="hass", MODE="0660"

然后运行例如

$ udevadm test /devices/pci0000:00/0000:00:07.1/0000:04:00.3/usb1/1-1/1-1.3

确实根据需要更改所有者/权限。然而,重启后权限会被重置,因为 systemd 默认情况下不会在容器中运行 udev:

systemd[1]: Rule-based Manager for Device Events and Files was skipped because of a failed condition check (ConditionPathIsReadWrite=/sys).

LXC 本身显然支持诸如lxc.cgroup.devices.allow解决此问题的指令。更改 libvirt LXC guest 设备权限的最佳方法是什么?

我想避免通过 libivrt 主机上的 udev 规则设置权限,因为这需要保持 uid/gid 与来宾同步。

访客是Arch,主机是Debian。

相关内容