GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Emulieren eines USB-Geräts mit einer Datei mit G_mass_storage => Udc-core:Konnte kein verfügbares Udc finden – [g_mass_storage] zur Liste der ausstehenden Treiber hinzugefügt?

Ich möchte einen USB aus einer Bilddatei emulieren.

Ich verwende Centos7 mit dem Kernel 4.11.7 über kernel-ml installiert und kernel-ml-devel elrepo 4.11.7-1.el7.elrepo.x86_64 (Eigentlich habe ich es mit 3.10.* 4.10.* 4.11.1 auch versucht)

Wir haben 2 Lösungen:

  1. mit insmod

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

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

  1. mit modprobe

    $ sudo modprobe g_mass_storage file=/tmp/testusb.img stall=0 remove=y
    modprobe:FATAL:Modul g_mass_storage nicht gefunden.
    Nichts in dmesg .

  2. Ich habe es auch mit dummy_hcd versucht :

    $ sudo modprobe dummy_hcd
    modprobe:FATAL:Modul dummy_hcd nicht gefunden.

Wie kann ich dieses Problem beheben?

Ich habe viele Dinge ausprobiert, wie das Neukompilieren des Kernels 4.11.1, indem ich alles mit Gadget usw. aktiviert habe …

/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

Ergebnis:
Nachdem ich den Kernel kompiliert hatte, konnte ich modprobe dummy_hcd ausführen und einen usb mit einer binärdatei zu emulieren.

Akzeptierte Antwort:

Sie benötigen den dummy_hcd Dummy (Loopback) Host-Controller-Gerät. Die Gadget-USB-Treiber sind für echte USB-Hardware gedacht, und auf normalen PCs existiert diese Hardware nicht. Der Loopback-Controller stellt sowohl das Framework für den Gadget-Controller als auch einen USB-Host-Controller bereit, um auf sie zuzugreifen. Also:

$ sudo modprobe dummy_hcd

gibt Ihnen einen neuen Root-Hub

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

Jetzt können Sie den Gadget-Treiber modifizieren

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

und es wird unter dem neuen Root-Hub angezeigt

$ 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

Beachten Sie, dass Sie kein USB-Massenspeichergerät simulieren müssen, wenn Sie nur am Inhalt der Datei interessiert sind, Sie können das direkt einhängen (über das Loop-Gerät, aber das geschieht automatisch).


Linux
  1. Erstellen eines PC-bootfähigen USB-Sticks mit einer .iso-Datei auf einem MAC

  2. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

  3. Suchen und kopieren Sie die Datei mit Bash

  4. Iterieren Sie über eine Liste von Dateien mit Leerzeichen

  5. Alle Grafikdateien mit find auflisten?

Verwenden des Cat-Befehls unter Linux mit Beispielen

So ermitteln Sie die Bandbreitennutzung von USB-Geräten unter Linux

Finden Sie verlorene Dateien mit Scalpel

Wie fülle ich eine Datei mit FF mit dd auf?

Wie lösche ich eine Datei mit einem seltsamen Namen?

Wie liste ich Dateien mit vollständigen Pfaden in Linux auf?