每当连接特定的USB设备时,如何在LXC系统容器中执行命令?通常,我会使用udev(参见 1 , 2 , 3 , 4 , 五 ),但据我所知,udev不能在容器内使用。
更具体地说,我有一个特权LXC系统容器在Ubuntu 16.04(Xenial)主机系统上运行Ubuntu 14.04(Trusty)。有问题的USB设备(Xilinx平台电缆USB II)需要加载固件(通过fxload)。
在容器的配置文件中,我有
lxc.cgroup.devices.allow = c 189:* rwm
lxc.mount.entry = /dev/bus/usb dev/bus/usb none bind,optional,create=dir
这允许我从容器内手动加载固件,然后使用该设备。我希望在连接设备时自动加载固件。
作为一种解决方法,我目前在主机上使用udev来自动加载固件,并遵循以下规则:
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2lp -I /opt/Xilinx/firmware/xusb_xp2.hex -D $tempnode"
但是,我想从容器内实现这一点;理想情况下,不需要对主机系统进行任何修改(当然,容器配置除外)。
当然,我可以从主机上的udev调用lxc-attach(或ssh)来在容器内运行命令。这样,至少可以从容器内执行固件加载。但这仍然需要修改主机(加上在启动容器之前连接USB设备的情况的特殊处理)。
—
Martin Herrmann