イメージファイルからUSBをエミュレートしたいです。
Centos7を使用しています。カーネル 4.11.7kernel-ml
パスとインストールkernel-ml-devel
エル・レポ 4.11.7-1.el7.elrepo.x86_64
(実際には3.10.*4.10.*4.11.1も試してみました。)
私たちは2つのソリューションを持っています:
そしてモジュールの挿入
sudo insmod /link/to/g_mass_storage.ko ファイル=/tmp/filebin.imgstall=0 リムーバブル=y
存在する情報:
udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers
そしてモジュールプローブ
$ sudo modprobe g_mass_storage ファイル=/tmp/testusb.imgstall=0 リムーバブル=y modprobe: 致命的: モジュール g_mass_storage が見つかりません。中には何もない情報。
私も試しましたvirtual_hcd:
$ sudo modprobe dummy_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
結果:
カーネルをコンパイルした後、バイナリを使ってUSBをエミュレートできましたmodprobe dummy_hcd
。
答え1
dummy_hcd
仮想(ループバック)ホストコントローラデバイスが必要です。 Gadget USBドライバは、通常のPCには存在しない実際のUSBハードウェア用です。ループバックコントローラは、ガジェットコントローラ用のフレームワークとそれにアクセスする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大容量記憶装置をエミュレートする必要はなく、デバイスを直接マウントできます(デバイスをループして自動的に実行されます)。