的挑战:我有一个Linux手持设备,它记录数据并将其存储到磁盘上。它应该通过USB与Windows应用程序交换这些数据。当用户访问这些数据时--例如通过USB--海量存储--必须对其进行加密。它应该是开箱即用的,有各种操作系统,也适用于citrix终端会话等.
The Plan:我用熔断器在用户空间创建了一个文件系统,并通过大容量存储将其提供给windows。每当Windows访问一个文件时,我都会得到一个回调,并实时加密数据。此外,我们可以有一些动态内容--例如,当某个密码被写入文件中时,会显示更多的内容。
The Problem:当使用海量存储小工具(例如存储)时,它只接受文件或阻塞设备,而不接受文件系统(目录)。为什么?
..。它提供了一个简单的接口来读取和写入数据扇区--就像用于访问任何硬盘驱动器的低级接口一样.操作系统可以像硬盘一样对待USB驱动器,并且可以用他们喜欢的任何文件系统格式化它。(来自维基百科)
所以没有机会通过大容量存储拥有一个动态的文件系统.这似乎就是为什么我的android手机在我把手机连接到个人电脑时不挂载手机上的所有数据的原因。
Options
目前,似乎只有最后一个选择是现实的-或者你有另一个提示给我吗?
我会很感激的!
查莉
发布于 2011-05-16 20:16:50
USB大容量存储协议是块设备协议,它不工作在文件或目录级别。Windows主机希望看到g_mass_storage驱动程序公开的原始VFAT文件系统,并根据需要对VFAT元数据进行写入和读取,以了解目录是如何构造的。
正因为如此,将FUSE文件系统公开给windows主机是非常重要的。您必须模拟VFAT,将虚拟文件系统中的块分配给元数据和数据,而且由于windows主机可以自由缓存它读取的任何数据或元数据,一旦分配了一些元数据或数据,它就无法更改(因此对FUSE数据的更改不能反映在windows文件系统中)。windows主机还可以延迟和重新排序对元数据和数据的写入--如果您试图进行模拟,这将是非常混乱的。
现在,你可以做一些事情:
这些方法有其自身的问题:
发布于 2011-05-17 02:22:12
你可能会对Android感兴趣,它以前把自己作为USB大容量存储设备公开给主机,而现在却扮演了MTP设备的角色(从蜂巢开始)。
话虽如此,有人已经实现了您的选择1,虽然与“设备”和“主机”有点颠倒。QEMU有一个名为vvfat的疯狂黑客,它能够创建一个伪造的块设备,在VM看来,它包含一个VFAT文件集,只是从主机上的目录/文件树开始。它需要在启动之前进行完整的递归扫描,它依赖于OSes如何写入文件系统的细节,如果您在使用中独立地更改任何文件,则会失败,但是(不知怎么地)设法(有时)工作。
发布于 2012-11-06 14:11:30
可以将NBD协议转换为USB,并将“位爆炸”usb作为USB大容量存储设备出现在USB主机上。
最后的设置如下所示:
+---------------------------------+ +------------------+
| data collection device | | client device |
| +----------------+ | | |
| | collected data | | | SSH -> NBD |
| | -> linux fs | | | client |
| +--+-------------+--------+ | | | |
| -> | qemu vvfat | SSH +-{some network}-+ V |--> client PC
| | run NBD inside the VM| | | USB Mass Storage | USB port
+----+----------------------+-----+ +------------------+ https://stackoverflow.com/questions/6022715
复制相似问题