LXC:连接USB设备时运行命令


1

每当连接特定的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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.