GNU/Linux >> Tutoriels Linux >  >> Linux

Émulation d'un périphérique USB avec un fichier à l'aide de G_mass_storage => Udc-core :Impossible de trouver un Udc disponible - Ajout de [g_mass_storage] à la liste des pilotes en attente ?

Je voudrais émuler une clé USB à partir d'un fichier image.

J'utilise Centos7 avec le noyau 4.11.7 installé via kernel-ml et kernel-ml-devel elrepo 4.11.7-1.el7.elrepo.x86_64 (en fait j'ai essayé avec 3.10.* 4.10.* 4.11.1 aussi)

Nous avons 2 solutions :

  1. avec insmod

    sudo insmod /link/to/g_mass_storage.ko file=/tmp/filebin.img stall=0 amovible=y

Dans dmesg :
udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers

  1. avec modprobe

    $ sudo modprobe g_mass_storage file=/tmp/testusb.img stall=0 amovible=y
    modprobe :FATAL :module g_mass_storage introuvable.
    Rien dans dmesg .

  2. J'ai aussi essayé avec dummy_hcd :

    $ sudo modprobe dummy_hcd
    modprobe :FATAL :module dummy_hcd introuvable.

Comment puis-je résoudre ce problème ?

J'ai essayé beaucoup de choses comme recompiler le Kernel 4.11.1 en activant tout avec gadget etc…

/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

Résultat :
Après avoir compilé le noyau, j'ai pu modprobe dummy_hcd et d'émuler une clé USB avec un fichier binaire.

Réponse acceptée :

Vous avez besoin du dummy_hcd dispositif de contrôleur hôte factice (boucle). Les pilotes USB du gadget sont destinés au vrai matériel USB, et sur les PC normaux, ce matériel n'existe pas. Le contrôleur de bouclage fournit à la fois le cadre du contrôleur de gadget et un contrôleur hôte USB pour y accéder. Donc :

$ sudo modprobe dummy_hcd

vous donne un nouveau hub racine

$ lsusb
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Vous pouvez maintenant modprobe le pilote du gadget

$ sudo modprobe g_mass_storage file=/path/to/backing_file idVendor=0x1d6b idProduct=0x0104 iManufacturer=Myself iProduct=VirtualBlockDevice iSerialNumber=123

et il apparaîtra sous le nouveau hub racine

$ 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

Notez que vous n'avez pas besoin de simuler un périphérique de stockage de masse USB si vous êtes simplement intéressé par le contenu du fichier, vous pouvez le monter directement (via le périphérique en boucle, mais cela se produit automatiquement).


Linux
  1. Utilisation de Logrotate sous Linux pour gérer les fichiers journaux (avec exemples)

  2. Rechercher un fichier avec les commandes Rechercher et Localiser sous Linux

  3. Fichier de suppression Linux de taille 0

  4. Suppression de fichiers avec rm en utilisant find et xargs

  5. Comment trouver un fichier avec name=php.ini sur Linux en utilisant la commande grep

Utilisation de la commande Cat sous Linux avec des exemples

Comment trouver l'utilisation de la bande passante d'un périphérique USB sous Linux

Retrouver les fichiers perdus avec Scalpel

Comment remplir un fichier avec FF en utilisant dd ?

Comment supprimer un fichier avec un nom bizarre ?

Comment lister les fichiers avec des chemins complets sous Linux ?