Como tornar um USB visível no Contêiner LXD

3

Eu sou relativamente novo no LXD Conatiners. Eu tenho um host ubuntu 16.04 máquina em execução que tem um único recipiente:

root@ubuntu-blade1:/etc/udev/rules.d# lxc list
+-------------+---------+----------------------+------+------------+-----------+
|    NAME     |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+-------------+---------+----------------------+------+------------+-----------+
| nish-ubuntu | RUNNING | 10.20.186.185 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
root@ubuntu-blade1:/etc/udev/rules.d# 

Eu tenho um dispositivo USB conectado ao sistema host principal:

Disk /dev/sde: 14.7 GiB, 15795748864 bytes, 30851072 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0527cd14

A saída do lsusb é a seguinte:

root@ubuntu-blade1:/etc/udev/rules.d# lsusb
Bus 002 Device 005: ID 8564:1000 Transcend Information, Inc. JetFlash
Bus 002 Device 004: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub
Bus 002 Device 003: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 0624:0251 Avocent Corp. Virtual Mass Storage
Bus 001 Device 004: ID 0624:0249 Avocent Corp. Virtual Keyboard/Mouse
Bus 001 Device 003: ID 0624:0248 Avocent Corp. Virtual Hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Agora eu preciso detectar / anexar o usb (/ dev / sde) dentro do container. Estou tendo um pequeno contexto de udev e vi algumas perguntas sobre o mesmo problema, mas nenhuma tem um procedimento claro para isso. Alguém pode por favor guiar?

    
por Nishant Singh 20.07.2016 / 09:34

2 respostas

3

Essa pergunta é bem antiga, mas eu deparei com o mesmo caso de uso hoje e achei uma solução tão fácil que provavelmente ela não estava disponível sete meses atrás.

Neste link pode-se encontrar mais informações, mas essencialmente é assim:

digamos que temos um dispositivo de modem (comandos AT) em / dev / ttyUSB2 e um container "xenial1", pode-se adicionar ttyUSB2 ao container com o seguinte comando:

$ lxc config device add xenial1 ttyUSB2 unix-char path=/dev/ttyUSB2

não importa se o contêiner está sendo executado ou não

Essa configuração é salva permanentemente no perfil padrão do contêiner:

$ lxc config show xenial1
architecture: x86_64
config:
  security.privileged: "true"
  volatile.base_image: <numbers>
  volatile.eth0.hwaddr: xx:xx:xx:xx:xx:xx
  volatile.idmap.base: "0"
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices:
  root:
    path: /
    type: disk
  ttyUSB1:
    path: /dev/ttyUSB1
    type: unix-char
  ttyUSB2:
    path: /dev/ttyUSB2
    type: unix-char
ephemeral: false
profiles:
- default

Para excluir um dispositivo, use o comando "remover" no lugar de "adicionar".

NOTA: meu contêiner é "privilegiado", portanto, essa solução pode não funcionar em contêineres não privilegiados

    
por 17.02.2017 / 15:59
3

se você estiver usando um contêiner não-privilegiado, também poderá definir as permissões corretas para esse dispositivo ... i expierienced, esse foi o caso, quando tentei usar uma webcam em um contêiner ... talvez isso também ajude aqui ...

lxc config device add containerName yourNameForTheDevice unix-char path=/path/to/device

lxc config device set containerName yourNameForTheDevice mode 666

também esteja ciente do fato de que o usb-passthrough só funciona com lxd 2.5 ou superior, como Stephan Graber escreve no link (role para baixo para dispositivos USB em containers). então talvez você também precise adicionar o repositório dos desenvolvedores do lxd ... neste momento, os repositórios "normais" do ubuntu-xenial só possuem o lxd-versão 2.0.9

verifique qual versão você tem com

dpkg -l lxd

Dê uma olhada nesta página e considere o uso desse repositório: link

se você fizer isso, você pode atualizá-lo para a versão 2.15

    
por 04.07.2017 / 21:25