libvirt에 게스트 유형이 있고 lxc
다음과 같은 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 게스트 장치 권한을 변경하는 가장 좋은 방법은 무엇입니까?
게스트와 uid/gid를 동기화해야 하므로 libivrt 호스트에서 udev 규칙을 통해 권한을 설정하는 것을 피하고 싶습니다.
게스트는 Arch이고 호스트는 Debian입니다.