我想从图像文件模拟 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 file=/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 file=/tmp/testusb.imgstall=0可移动=y modprobe:致命:找不到模块g_mass_storage。里面什么都没有消息。
我也尝试过虚拟_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 大容量存储设备,您可以直接安装该设备(通过循环设备,但这会自动发生)。