Как подключить одно USB-устройство к контейнеру LXC?
ТЛ;ДР
- У меня есть два программных радиоустройства, подключенных к моему серверу Linux.
- У меня есть контейнер LXC, работающий на сервере Linux.
- Оба программных радиомодуля имеют одинаковые идентификаторы продукта и поставщика.
- Как прикрепить к контейнеру LXC только одну программную радиостанцию?
Почему?
Потому что я хочу, чтобы!
Более серьезный ответ: я даю менее доверенным пользователям доступ к контейнеру LXC, а не к хосту LXD. Я хочу, чтобы эти пользователи видели только одно из программных радиомодулей.
Отладка
Санитарная проверка
- Я использую стороннюю утилиту, которая прошивает радио через USB.
- Сначала я подключаю/разрешаю USB для обоих радиомодулей.
- команда:
lxc config device add my-container usrpUSB usb productid=6010 vendorid=0403
- команда:
- Запускаю утилиту для перепрошивки, и она работает
- Я отключаю USB
- команда:
lxc config device remove my-container usrpUSB
- команда:
- Запускаю утилиту для перепрошивки, но она не работает
- Вывод: USB-разъем lxc работает как положено.
Находим, что изменилось
- Идея: если я смогу найти файлы, которые
lxc config
изменилось в контейнере, возможно, я смогу сделать это вручную, поэтому: - Подключите USB (см. команду выше)
- Получение списка файлов-контейнеров
-
find / -ls > /tmp/find_with_usb.txt
-
- Отключите USB (см. команду выше)
- Получение списка файлов-контейнеров
-
find / -ls > /tmp/find_without_usb.txt
-
- Сравните два
- Есть более ста новых файлов
- Ни один из них не
/dev/ttyUSB*
устройства - Файлы в основном находятся в
/var/lib/lxcfs
и/sys/fs/cgroup
каталоги - Я не уверен, какой у них источник в системе LXD.
- Вывод: ручное сопоставление пути/символа-устройства не будет работать.
Так?
- Есть ли другой способ сделать это?
- Я не вижу никаких вариантов дальнейшего ограничения USB-устройств (источник)