使用 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 file=/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 file=/tmp/testusb.imgstall=0可移动=y modprobe:致命:找不到模块g_mass_storage。里面什么都没有消息

  2. 我也尝试过虚拟_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

结果: 编译内核后,我能够modprobe dummy_hcd使用二进制文件模拟 USB。

答案1

您需要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 大容量存储设备,您可以直接安装该设备(通过循环设备,但这会自动发生)。

相关内容