我想知道,是否可以让我的树莓派安装数码相机也安装的SD?
我有一个场景,我拍照的速度相对较快(Raspberry Pi 触发快门),有时图片会先从缓冲区中冲出,然后再存储到 SD 卡上。所以,我想在每次快门释放时检查 SD 卡的内容,以确保拍摄照片,因此安装将是只读的,所以也许这可以安全地完成?
也许答案是SD卡延长线?
我已经购买了无线 Transcend SD 卡,但对目录内容的轮询不可靠并且可能很慢。
德米特里·格林伯格 (Dmitry Grinberg),入侵 Transcend Wifi SD 卡的人声称SD卡上有linux runnig,并且SD的存储是由SD上的嵌入式linux runnig和数码相机(可能也是某种linux)同时安装的。他对安装相同存储的两个设备感到担忧。
也就是说,两个操作系统(卡中的 Linux 以及外部连接的任何操作系统)都具有相同的 FAT32 文件系统,可读写安装。如果这没有吓到您,那么它应该是 - 外部文件系统可以随意缓存读取和缓冲区写入,因此无论内部驱动程序多么聪明,它都永远无法掌握全貌。这里的教训是,在没有仔细考虑后果的情况下,不要写入 /mnt/sd。
我想知道树莓派和数码相机之间是否可以做类似的事情。
问候, 弗拉特科
答案1
可以同时在多个系统上挂载块设备的唯一方法是块设备包含为此目的设计的文件系统,例如OCFS2。 “普通”文件系统喜欢ext4
或vfat
不能支持这一点。由于数码相机几乎肯定只支持vfat
文件系统类型,因此这是不可能的。
市场上有一些产品声称可以做到这一点(例如带 WiFi 的 SD 卡),但它们是极其丑陋的黑客行为。他们耍花招,比如通过检查文件中的 JPEG 数据是否完整来尝试检测相机何时完成写入文件,然后希望相机停止访问该文件,但这是无法保证的。这些产品可能对您有用,但也有可能它们什么也不做或严重损坏您的数据。 YMMV。
答案2
@Celada的答案是正确的,但是有是如果您愿意冒着破坏数据的风险玩火,那么可以做您想做的事情。
第一的,第二个系统必须以只读方式挂载文件系统。如果不这样做,就会损坏文件系统。你似乎已经知道了。
其次,从第二个系统访问文件系统的任何尝试都是去已经过时了。由于缓存,第二个系统将始终“看到”系统过去某个时间的样子。您不会看到文件系统的更新 - 新文件、删除、文件在写入时增长。
但是,如果您在第二个系统上删除缓存,则可以“更新”第二个系统的“共享”文件系统视图:
echo 3 > /proc/sys/vm/drop_caches
漂亮的?不,克鲁吉?当然。特别是对于未设计为在设备级别共享的文件系统。
但话又说回来,Oracle 的高性能 QFS 文件系统在其“多读取器”配置中做到了这一点,其中单个文件系统可以由许多主机读取:
http://docs.oracle.com/cd/E22586_01/html/E22571/gkxer.html
如果您可以在线找到源代码,Sun Microsystems 在被 Oracle 收购之前就开源了基本 QFS 文件系统代码。