切入正题
Linux 复合 USB 小工具海量存储功能是否支持其 LUN 媒体备份文件的热插拔?如果是这样,有没有人让它工作?
背景
Linux USB 复合小工具包括一个海量存储功能,可以支持多个逻辑单元,每个逻辑单元映射到一个驱动器映像文件(如 FAT 或 ISO)。据我所知,大容量存储功能似乎从以前的独立g_mass_storage 小工具继承了部分或全部配置接口
该文档暗示您可以将存储映像挂载为大容量存储 LUN,然后以类似于物理 CD/DVD 驱动器的工作方式将其卸载并重新挂载新的存储映像。我正在尝试访问的正是此功能。
我试过的
我正在使用 insmod/modprobe 和 rmmod 来挂载和卸载映射到 ISO 映像的单个 LUN。modprobe 参数是 Edison 配置的修改版本,用于公开其“固件更新”驱动器映像。
USB 从属设备是英特尔 Edison 开发板,运行略微修改的 Yocto 版本,主机是 OS X 10.10.2:
# Step 1: mount an ISO
modprobe g_multi file=/home/root/first_image.iso removable=1 ro=1 stall=0 idVendor=0x8087 idProduct=0x0A9E iProduct=Edison iManufacturer=Intel
# at this point, the ISO appears on the host (I'm testing with OS X)
# Step 2, at some later time
rmmod g_multi
# The storage disappears from the OS X desktop.
# It does not seem to complain unless you had files open on the media
# Step 3: mount a different ISO
modprobe g_multi file=/home/root/second_image.iso removable=1 ro=1 stall=0 idVendor=0x8087 idProduct=0x0A9E iProduct=Edison iManufacturer=Intel
# The operation appears to work on the device side,
# but the new media does not appear in OS X.
# You can usually get it to work by unplugging the USB cable,
# which presumably resets the port somehow.
我试图找到一种在软件控制下重置 OTG 设备端口的方法。这可能是最终的解决方案。
我还没有(还)尝试使用 configfs 接口来构建和配置设备。这也可能是一种选择,但我仍在研究相关文档。
谢谢!