Pomoc Containerstation i ttyUSB*

keff

Entry Technician
Q Associate
20 Kwiecień 2010
45
8
18
45
QNAP
TVS-x82
Ethernet
1 GbE
Witajcie,

mam pytanko Kontener widzi podłączone urządzenia pod USB tylko w przy uruchamianiu w trybie uprzywilejowanym, bez trybu uprzywilejowanego włożenie czegokolwiek w port USB nie skutkuje dodaniem urządzenia w /dev/. W trybie uprzywilejowanym nie może czytać z USB dopóki nie ustawie chmod a+rw /dev/ttyUSB0.

Da się to jakoś ustawić czy trzeba pisać skrypt aby zmieniał uprawnienia po restarcie kontenera?
 
Chwilowo nie mam nic wpiętego w QNAP'a i nie mam widocznych żadnych urządzeń USB. ale z tego co pamiętam uprawnienia były:

crw------- 1 admin administ
Wracam do tematu.
Z poziomu QNAP'a mam:

crw------- 1 admin administ 188, 0 Aug 9 20:34 ttyUSB0

z poziomu dockera mam
crw------- 1 root root 188, 0 Aug 9 18:38 /dev/ttyUSB0

Zrobiłem restart QNAP'a i zauważyłem iż zaraz po starcie QNAP nie tworzy urządzenia /dev/ttyUSB0, w między czasie startuje docker, który tego urządzenia też nie będzie miał. Dopiero na koniec startu inicjalizowane jest urządzenie USB.

Kod:
[  246.976755] cgroup: docker-runc (32381) created nested cgroup for controller "memory" which has incomplete hierarchy support. Nested cgroups may change behavior in the future.
[  246.992361] cgroup: "memory" requires setting use_hierarchy to 1 on the root
[  271.584273] qpkg_service [start]
[  271.584273]    timeout = 30
[  271.584273]    qpkg.name = container-station
[  271.584273]    qpkg.timeout = 30,300
[  271.584273]    option.timeout = 0
[  271.584273]    WTERMSIG = 9
[  273.680666] device vethd043c85 entered promiscuous mode
[  273.685955] docker0: port 1(vethd043c85) entered forwarding state
[  273.692050] docker0: port 1(vethd043c85) entered forwarding state
[  273.698191] docker0: port 1(vethd043c85) entered disabled state
[  273.780411] eth0: renamed from vethd0ff85a
[  273.789252] docker0: port 1(vethd043c85) entered forwarding state
[  273.795364] docker0: port 1(vethd043c85) entered forwarding state
[  288.814850] docker0: port 1(vethd043c85) entered forwarding state
[  318.007086] flashcache flashcache_ioctl 21297
[  318.011554] flashcache flashcache_ioctl 21297
[  359.404886] vethd0ff85a: renamed from eth0
[  359.413230] docker0: port 1(vethd043c85) entered disabled state
[  359.433285] docker0: port 1(vethd043c85) entered disabled state
[  359.440990] device vethd043c85 left promiscuous mode
[  359.445967] docker0: port 1(vethd043c85) entered disabled state
[  359.888191] device vethfa408df entered promiscuous mode
[  359.893524] docker0: port 1(vethfa408df) entered forwarding state
[  359.899612] docker0: port 1(vethfa408df) entered forwarding state
[  359.977396] eth0: renamed from vethda3233e
[  372.506418] Set msys_nodify as 31389
[  372.510151] Set msys_nodify as 31389
[  372.513850] Set msys_nodify as 31389
[  372.535884] Set msys_nodify as 31389
[  372.539621] Set msys_nodify as 31389
[  372.543279] Set msys_nodify as 31389
[  372.546894] Set msys_nodify as 31389
[  372.550549] Set msys_nodify as 31389
[  372.554161] Set msys_nodify as 31389
[  372.557801] Set msys_nodify as 31389
[  372.561411] Set msys_nodify as 31389
[  372.565036] Set msys_nodify as 31389
[  372.568736] Set msys_nodify as 31389
[  372.572359] Set msys_nodify as 31389
[  372.576075] Set msys_nodify as 31389
[  372.579728] Set msys_nodify as 31389
[  372.583355] Set msys_nodify as 31389
[  372.586991] Set msys_nodify as 31389
[  374.904930] docker0: port 1(vethfa408df) entered forwarding state
[  384.952371] flashcache flashcache_ioctl 21297
[  384.956816] flashcache flashcache_ioctl 21297
[  394.293534] usbcore: registered new interface driver
[  394.299436] usbserial: USB Serial support registered for USB Serial Device
[  394.317775] usb 1-7: USB Serial Device converter now attached to ttyUSB0
[  397.961407] ====== 2017-08-09 20:34:51 TVS-882 (4.3.3.0235-20170727) boot finished.

W związku z tym mam dwie zagwozdki:

1. jak opóźnić start DOCKERA do czasu aż QNAP wystartuje i utworzy urządzenia USB(/dev/ttyUSBx)

2. jak z automatu podczas startu dockera nadać uprawnienia dla /dev/ttyUSBx

Raczkuje jeszcze jeśli chodzi o ContainerStation więc proszę o wyrozumiałość.
 
Nie wiem kolego czy już sobie poradziłeś. Stoję właśnie w tym samym momencie co i ty kolego. To znaczy już postawiony kontener z HASS i podłączone do niego porty USB są widoczne lecz podczas kontrolowanych restartów i ponownym wstaniu znowu muszę zainicjować porty na nowo...

Po samym starcie maszyny:

Kod:
# ls -l /dev/ttyUSB*
crw------- 1 admin administrators 188, 0 2018-05-01 15:43 /dev/ttyUSB0
crw------- 1 admin administrators 188, 1 2018-05-01 15:43 /dev/ttyUSB1
[~] #

W kontenerze brak dostępów do portów.
Opening device /dev/ttyUSBx (errno=2 No such file or directory)

Wykonanie polecenie:
Kod:
c
[~] # chmod 666 /dev/ttyUSB*
[~] # ls -l /dev/ttyUSB*
crw-rw-rw- 1 admin administrators 188, 0 2018-05-01 15:43 /dev/ttyUSB0
crw-rw-rw- 1 admin administrators 188, 1 2018-05-01 15:43 /dev/ttyUSB1

Restart kontenera
creating thread for device /dev/ttyUSB1

Wówczas wszystko działa. Do następnego restartu...

Próbowałem już też przez zmianę zawartości pliku autostart.sh

Kod:
mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config

Edytowaniu pliku /tmp/config/autostart.sh

Kod:
#!/bin/sh
chmod 666 /dev/ttyUSB*

I ponownym montowaniu

Kod:
umount /tmp/config

Lecz tak jak zauważyłeś porty USB są montowane później tuż za startem dockera....
 
Niestety - do dnia dzisiejszego nie poradziłem sobie z tym problemem. Poprostu po każdym restarcie musze pamiętać o zmianie uprawnień i ponownym uruchomieniu aplikacji w Container Station.