1

Как выполнить команду в системном контейнере LXC при подключении определенного USB-устройства? Обычно я использовал бы udev (ср. 1, 2, 3, 4, 5), но, насколько я могу судить, udev нельзя использовать внутри контейнера.

В частности, у меня есть привилегированный системный контейнер LXC, работающий под управлением Ubuntu 14.04 (Trusty) на хост-системе Ubuntu 16.04 (Xenial). Рассматриваемое устройство 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"

Тем не менее, я хотел бы добиться этого изнутри контейнера; в идеале таким образом, чтобы не требовалось никаких изменений в хост-системе (кроме, конечно, конфигурации контейнера).

0