g_mass_storage => udc-coreを使用してファイルを使用したUSBデバイスエミュレーション:利用可能なUDCが見つかりません - 保留中のドライバのリストに[g_mass_storage]を追加する

g_mass_storage => udc-coreを使用してファイルを使用したUSBデバイスエミュレーション:利用可能なUDCが見つかりません - 保留中のドライバのリストに[g_mass_storage]を追加する

イメージファイルから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つのソリューションを持っています:

  1. そしてモジュールの挿入

    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

  1. そしてモジュールプローブ

    $ sudo modprobe g_mass_storage ファイル=/tmp/testusb.imgstall=0 リムーバブル=y modprobe: 致命的: モジュール g_mass_storage が見つかりません。中には何もない情報

  2. 私も試しました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大容量記憶装置をエミュレートする必要はなく、デバイスを直接マウントできます(デバイスをループして自動的に実行されます)。

関連情報