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