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



我已经看到一些应用程序能够在MacOS的Finder中将自己表示为外部磁盘。通常,这些是云存储应用程序,如PCloud Drive和WD Discovery。我想知道他们是怎么做到的。

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

这是一个相当高级的问题,所以我将给出一个高级的答案。我不知道你列出的具体例子是如何实现的,但这应该不难找到。

据我所知,选项如下:

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

相关内容

  • 没有找到相关文章

最新更新