我正在尝试创建一个运行 mythtv (server) 的 LXC 容器......它需要访问 USB 调谐器
似乎缺乏关于如何将 USB 设备传递到 LXC 容器的信息
这篇文章讨论了适当设置 cgroups 的必要性 https://unix.stackexchange.com/questions/137931/usb-passthrough-for-lxc-containers
主机是 Ubuntu 14.04 (Trusty),它成功运行了其他无特权的 LXC 容器,这些容器通过 X2Go 访问并直接连接到 X11(每种类型的 1 个“永久”运行并且运行良好)。基本配置已(仅)更改为将容器存储放置在自定义位置(专用 LVM 分区)。
有问题的容器是 (a) 特权 (b) 运行 Ubuntu Trusty AMD64 (c) 在配置文件“lxc.cgroup.devices.allow = c 189:* rwm”中设置了 cgroups,考虑到主要/次要使用“ls -la /dev/bus/usb/003/”找到相关USB设备的ID
Apparmor 似乎不是主要问题(尽管我可能是错的)我尝试设置“lxc.aa_profile = unconfined”,这似乎没有帮助。我还创建了一个自定义 Apparmor 配置文件,这导致了一系列 cgroup 错误。我被难住了,甚至不知道从哪里开始——谷歌搜索出现了关于基于 Libvirt 的 USB 直通和 LXC USB 直通补丁的讨论,但没有针对非 Libvirt 情况的说明
有人可以建议如何解决这个问题。
谢谢
基本上答案是——
您需要绑定安装您想要访问的主机设备,例如。
mount --bind /dev/dvb /path_to_your_container/rootfs/dev/dvb
....记得先创建目标目录
owner访问您上面安装的设备的权限/etc/lxc/lx.conf在容器配置文件(或所有特权容器)
中添加相关的 cgroup 条目,
即。lxc.cgroup.devices.allow = c xxx:* rwm其中xxx=主要的“主要”部分:次要ID使用ls -la /dev/dvb.....212用于DVB或189用于USB(在我的系统上),因此对于我的情况,DVB访问是通过授予lxc.cgroup.devices.allow = c 212:* rwmApparmor 更改是不必要的.. 绑定挂载和 cgroup 条目足以启用容器对 DVB 设备的访问(恰好是 USB 设备,但也没有必要启用对“USB”设备的访问...只是 DVB 设备在/dev/dvb中)