如何在macOS上实现虚拟文件系统?

威廉·罗森布鲁姆

我已经看到,某些应用程序能够将自己表示为MacOS上Finder中的外部磁盘。通常,这些是云存储应用程序,例如PCloud DriveWD Discovery我想知道他们是如何做到的。

我意识到云存储可能只是实现一些远程文件系统协议,例如Samba或AFP。但是我仍然不太了解应用程序如何将文件系统直接安装到Finder中。此外,如果虚拟文件系统不依赖网络存储,是否有更有效的方法来挂载虚拟文件系统?

pmdj

这是一个相当高级的问题,因此我将给出一个高级答案。我不知道您列出的特定示例是如何实现的,但这不难发现。

据我所知,这些选项如下:

  • 从根本上讲,您可以创建VFS kext。这就是首先在macOS中实现对HFS +,APFS,FAT,SMB,AFP等的支持的方式。在Kernel.framework这个头主要是<sys/vnode.h><sys/vnode_if.h><vfs/vfs_support.h>这为您提供了最大的功能,但这也很困难,并且安装kexts的用户体验持续恶化。(除非用户进行一些相当复杂的杂技,否则它们根本不会在ARM64 Mac上加载。)
  • MacFUSE可以为您完成一些繁重的工作。一些许可问题,它又通过kext实现,因此UX问题也适用于此。
  • 使用NSFileProvider这旨在用于云风格的虚拟文件系统,但在某种程度上可以用于不同但相关的方案。
  • 实施网络文件系统服务器,然后使用API​​进行安装。
  • 通过另一种方法,例如通过DriverKit SCSI控制器驱动程序,或通过iSCSI目标,实现承载常规文件系统的块设备。仅当数据源可合理地表示为块设备时,这才有意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章