如何模拟 USB 闪存驱动器并同时读取数据

Posted

技术标签:

【中文标题】如何模拟 USB 闪存驱动器并同时读取数据【英文标题】:How to emulate USB flash drive and read data simultaneous 【发布时间】:2017-07-22 13:12:09 【问题描述】:

当您将带有 exFAT/FAT32 和特定目录树的闪存驱动器放入其 USB 插槽时,我有一个设备可以保存屏幕截图。我想通过以太网尽快将这些屏幕截图直播到其他设备:

设备 -> 闪存驱动器 -> 以太网

所以我尝试了一个支持 OTG 的 ARM 设备(Orange Pi Zero)和 g_mass_storage 内核模块,它通过 USB OTG 模拟 USB 闪存驱动器:

g_mass_storage - 让您的 Pi Zero 显示为大容量存储设备 (闪存驱动器),首先在您的 Pi 上的文件中创建一个迷你文件系统 使用sudo dd if=/dev/zero of=/piusb.bin bs=512 count=2880 并设置它 使用sudo mkdosfs /piusb.bin 作为 fat32 文件系统。那么,当 启用它,例如在末尾添加file=/piusb.bin stall=0 sudo modprobe g_mass_storage file=/piusb.bin stall=0.

(来自https://gist.github.com/gbaman/50b6cca61dd1c3f88f41)

接下来,我在笔记本电脑 (Linux Mint 18) 上安装了用于测试目的的仿真闪存驱动器,并通过 ARM 设备上的sudo mount /piusb.bin /mnt/ 安装了闪存驱动器文件。但是当我在一个系统中添加新文件/目录时,它不会出现在另一个系统中。我必须先重新挂载设备/文件才能刷新文件。

那么甚至可以在我的 ARM 设备上使用g_mass_storage 同时读取(和流式传输)写入的数据吗?或者有没有更好的方法来解决我的问题?

【问题讨论】:

【参考方案1】:

您应该尝试重新安装它。 sudo umount /mnt/ sudo mount /piusb.bin /mnt/

【讨论】:

以上是关于如何模拟 USB 闪存驱动器并同时读取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 USB 闪存驱动器的制造商序列号?

用 PC 模拟 U 盘

USB闪存驱动器制造商序列号

如何在 Linux 下的 C 中确定 USB 存储(USB 闪存驱动器)“设备路径”

UDEV - 在 USB 闪存驱动器插入上运行程序 [关闭]

重新启动 Windows 8 并从 USB 闪存驱动器启动的代码