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

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

每当连接特定 USB 设备时,如何在 LXC 系统容器中执行命令?通常,我会使用 udev(参见12345),但据我所知,udev 不能在容器内使用。

更具体地说,我有一个特权 LXC 系统容器,在 Ubuntu 16.04 (Xenial) 主机系统上运行 Ubuntu 14.04 (Trusty)。有问题的 USB 设备 (Xilinx Platform Cable 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"

但是,我想在容器内部实现这一点;理想情况下不需要对主机系统进行任何修改(当然,容器配置除外)。

答案1

您可以执行一个 cron 作业脚本来在 while 循环中的其他条件下检测具有特定 ID 的条件 lsusb stdout……并触发您想要的任何内容。

相关内容