GNU/Linux >> Linux Esercitazione >  >> Linux

Emulare un dispositivo USB con un file utilizzando G_mass_storage => Udc-core:impossibile trovare un Udc disponibile - Aggiunto [g_mass_storage] all'elenco dei driver in sospeso?

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:

  1. 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

  1. 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 .

  2. 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).


Linux
  1. trova e copia il file usando Bash

  2. Itera su un elenco di file con spazi

  3. Elenca tutti i file di immagini grafiche con find?

  4. Elenca il file usando il comando ls in Linux con percorso completo

  5. Rimozione di file con rm utilizzando find e xargs

Utilizzo di Cat Command in Linux con esempi

Come trovare l'utilizzo della larghezza di banda del dispositivo USB su Linux

Trova i file persi con Scalpel

Come trovare il file con name=php.ini su Linux usando il comando grep

Come eliminare un file con un nome strano?

Come posso elencare i file con percorsi completi in Linux?