画像ファイルからUSBをエミュレートしたい。
カーネル4.11.7でCentos7を使用しています kernel-ml
を介してインストール およびkernel-ml-devel
elrepo 4.11.7-1.el7.elrepo.x86_64
(実際、3.10。*4.10。*4.11.1でも試してみました)
2つの解決策があります:
-
insmodを使用
sudo insmod /link/to/g_mass_storage.ko file =/ tmp / filebin.img stall =0 removeable =y
dmesg :
udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers
-
modprobeを使用
$ sudo modprobe g_mass_storage file =/tmp/testusb.img stall =0 removeable =y
modprobe:FATAL:モジュールg_mass_storageが見つかりません。
dmesgに何もありません 。 -
dummy_hcdも試してみました :
$ sudomodprobeダミー_hcd
modprobe:致命的:モジュールdummy_hcdが見つかりません。
この問題を解決するにはどうすればよいですか?
ガジェットなどですべてを有効にして、カーネル4.11.1を再コンパイルするなど、さまざまなことを試しました…
/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
結果:
カーネルをコンパイルした後、modprobe dummy_hcd
することができました バイナリファイルでUSBをエミュレートします。
承認された回答:
dummy_hcd
が必要です ダミー(ループバック)ホストコントローラーデバイス。ガジェットUSBドライバーは、実際のUSBハードウェア用であり、通常のPCにはこのハードウェアは存在しません。ループバックコントローラーは、ガジェットコントローラーのフレームワークと、それらにアクセスするためのUSBホストコントローラーの両方を提供します。だから:
$ sudo modprobe dummy_hcd
新しいルートハブを提供します
$ lsusb
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
これで、ガジェットドライバーをmodprobeできます
$ sudo modprobe g_mass_storage file=/path/to/backing_file idVendor=0x1d6b idProduct=0x0104 iManufacturer=Myself iProduct=VirtualBlockDevice iSerialNumber=123
新しいルートハブの下に表示されます
$ 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
ファイルの内容だけに関心がある場合は、USB大容量ストレージデバイスをシミュレートする必要がないことに注意してください。直接マウントできます(ループデバイスを介してマウントできますが、自動的に行われます)。