切入大通
Linux组合USB小工具大容量存储功能是否支持热插拔LUN媒体备份文件?如果是这样,有没有人让它工作?
背景
Linux USB composite gadget包括一个Mass Storage功能,它可以支持多个逻辑单元,每个逻辑单元映射到一个驱动器映像文件(如FAT或ISO)。据我所知,Mass Storage功能似乎继承了之前独立的g_mass_storage gadget
中的部分或全部配置界面。文档暗示您可以将存储映像作为大容量存储LUN挂载,然后在以后卸载它并重新装入新的存储映像,其方式与物理CD / DVD驱动器的工作方式类似。正是我试图访问这个功能。
我尝试过什么
我使用insmod / modprobe和rmmod来挂载和卸载映射到ISO映像的单个LUN。 modprobe参数是Edison config库存的修改版本,用于公开其“固件更新”驱动器映像。
USB slave是英特尔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接口来构建和配置设备。这也许是一种选择,但我仍在研究这方面的文档。
谢谢!
答案 0 :(得分:0)
至少在:
$ uname -r
4.9.87
我找到了:
$ find /sys -type f -a -name file
/sys/devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0/gadget/lun0/file
/sys/module/g_multi/parameters/file
前缀在很大程度上取决于您的硬件,但是小工具/ lun0 /文件之一是可写的。然后,您将:
echo "/where/is/your/file" >.../lun0/file
,瞧。当然,您需要隐含OP来传递可移动= 1的go g_file。
要“弹出”设备,只需执行以下操作:
echo >.../lun0/file
如果文件系统仍安装在主机上,则最后一个失败。