저는 LXD Conatiners를 처음 접했습니다. 호스트 우분투 16.04 머신이 실행 중이고 컨테이너가 있습니다.
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#
기본 호스트 시스템에 USB 장치가 연결되어 있습니다.
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
lsusb의 출력은 다음과 같습니다.
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
이제 컨테이너(/dev/sde) 내부의 USB를 감지/연결해야 합니다. 나는 udev에 대해 어느 정도 지식이 있고 동일한 문제에 대한 여러 스택 질문을 보았지만 이를 수행하는 명확한 절차는 없습니다. 누구든지 나에게 지침을 줄 수 있습니까?
답변1
이 질문은 꽤 오래되었지만 오늘 동일한 사용 사례를 우연히 발견했으며 아마도 7개월 전에는 존재하지 않았던 매우 간단한 솔루션을 찾았습니다.
이것에협회더 많은 정보를 찾을 수 있지만 본질적으로 다음과 같습니다.
모뎀 장치(AT 명령)와 /dev/ttyUSB2에 "xenial1" 컨테이너가 있다고 가정하면 다음 명령을 사용하여 ttyUSB2를 컨테이너에 추가할 수 있습니다.
$ lxc config device add xenial1 ttyUSB2 unix-char path=/dev/ttyUSB2
컨테이너가 실행 중인지 여부는 중요하지 않습니다.
이 구성은 컨테이너의 기본 구성 파일에 유지됩니다.
$ 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
장치를 제거하려면 "추가" 명령 대신 "제거" 명령을 사용하십시오.
참고: 내 컨테이너는 "권한"이 있으므로 이 솔루션은 권한이 없는 컨테이너에서는 작동하지 않을 수 있습니다.
답변2
권한이 없는 컨테이너를 사용하는 경우 장치에 대한 올바른 권한을 설정할 수도 있습니다... 내 경험에 따르면 컨테이너에서 웹캠을 사용하려고 할 때 이런 경우가 있었습니다... 어쩌면 그것도 도움이 될 수 있습니다...
lxc 구성 장치 추가 컨테이너 이름 yourNameForTheDevice unix-char 경로=/path/to/device
lxc 구성 장치 세트 컨테이너 이름 yourNameForTheDevice 모드 666
또한 Stephan Graber가 설명했듯이 USB 패스스루는 lxd 2.5 이상에서만 작동합니다.https://stgraber.org/(컨테이너의 USB 장치까지 아래로 스크롤합니다). 따라서 lxd-developers의 저장소도 추가해야 할 수도 있습니다. 현재 "일반" ubuntu-xenial 저장소에는 lxd-version 2.0.9만 있습니다.
사용 중인 버전을 확인하세요.
dpkg -l lxd
이 페이지를 확인하고 이 저장소 사용을 고려해보세요. https://launchpad.net/~ubuntu-lxc/+archive/ubuntu/lxd-stable
그렇다면 버전 2.15로 업데이트할 수 있습니다.