Vorrei emulare una USB da un file immagine.
Sto usando Centos7 con il Kernel 4.11.7 installato tramite kernel-ml
e kernel-ml-devel
elrepo 4.11.7-1.el7.elrepo.x86_64
(in realtà ho provato anche con 3.10.* 4.10.* 4.11.1)
Abbiamo 2 soluzioni:
-
con insmod
sudo insmod /link/to/g_mass_storage.ko file=/tmp/filebin.img stall=0 rimovibile=y
In dmesg :udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers
-
con modprobe
$ sudo modprobe g_mass_storage file=/tmp/testusb.img stall=0 Removable=y
modprobe:FATAL:Modulo g_mass_storage non trovato.
Niente in dmesg . -
Ho anche provato con dummy_hcd :
$ sudo modprobe dummy_hcd
modprobe:FATAL:modulo dummy_hcd non trovato.
Come posso risolvere questo problema?
Ho provato molte cose come ricompilare il kernel 4.11.1 abilitando tutto con gadget ecc...
/usr/src/kernels/4.11.7-1.el7.elrepo.x86_64 $ cat .config | grep CONFIG_USB_DUMMY_HCD
# CONFIG_USB_DUMMY_HCD is not set
Risultato:
Dopo aver compilato il kernel, sono stato in grado di modprobe dummy_hcd
e per emulare una usb con un file binario.
Risposta accettata:
Hai bisogno del dummy_hcd
dispositivo controller host fittizio (loopback). I driver USB del gadget sono pensati per hardware USB reale e sui normali PC questo hardware non esiste. Il controller di loopback fornisce sia la struttura per il controller del gadget, sia un controller host USB per accedervi. Quindi:
$ sudo modprobe dummy_hcd
ti offre un nuovo hub radice
$ lsusb
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Ora puoi modificare il driver del gadget
$ sudo modprobe g_mass_storage file=/path/to/backing_file idVendor=0x1d6b idProduct=0x0104 iManufacturer=Myself iProduct=VirtualBlockDevice iSerialNumber=123
e verrà visualizzato sotto il nuovo hub principale
$ lsusb
Bus 005 Device 002: ID 0525:a4a5 Netchip Technology, Inc. Pocketbook Pro 903
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Nota che non è necessario simulare un dispositivo di archiviazione di massa USB se sei interessato solo al contenuto del file, puoi montarlo direttamente (tramite il dispositivo loop, ma ciò accade automaticamente).