LXC: esegue il comando quando è collegato un dispositivo USB


1

Come posso eseguire un comando in un contenitore di sistema LXC ogni volta che viene collegato un dispositivo USB specifico? Di solito, userei udev (cfr. 1 , 2 , 3 , 4 , 5 ), ma per quanto ne so, udev non può essere usato all'interno di un contenitore.

Più specificamente, ho un container di sistema LXC privilegiato che esegue Ubuntu 14.04 (Trusty) su un sistema host Ubuntu 16.04 (Xenial). Il dispositivo USB in questione (un cavo di piattaforma Xilinx USB II) richiede il caricamento di un firmware (tramite fxload).

Nel file di configurazione per il contenitore, ho

lxc.cgroup.devices.allow = c 189:* rwm
lxc.mount.entry = /dev/bus/usb dev/bus/usb none bind,optional,create=dir

Ciò mi consente di caricare manualmente il firmware dall'interno del contenitore e successivamente di utilizzare il dispositivo. Vorrei che il firmware fosse caricato automaticamente quando il dispositivo è collegato.

Come soluzione alternativa, attualmente uso udev sull'host per caricare automaticamente il firmware con la seguente regola:

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"

Tuttavia, vorrei raggiungere questo obiettivo dal contenitore; idealmente in un modo che non richiede alcuna modifica al sistema host (tranne, ovviamente, la configurazione del contenitore).


Potrei, ovviamente, chiamare lxc-attach (o ssh) da udev sull'host per eseguire un comando all'interno del contenitore. In questo modo, almeno il caricamento del firmware verrebbe eseguito dall'interno del contenitore. Ciò richiederebbe comunque modifiche all'host (oltre a un trattamento speciale del caso in cui il dispositivo USB è collegato prima dell'avvio del contenitore).
Martin Herrmann,

Risposte:


0

puoi fare uno script cron job per rilevare uno stdout lsusb condizionale con un particolare ID in un ciclo while su condizione else ... e attivare quello che vuoi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.