Skip to content

xntfs 和 xlinuxfs:让 macOS 更自然地读写跨平台磁盘 #5392

Description

@EyreFree

macOS 磁盘格式支持扩展工具推荐:https://www.v2ex.com/t/1225846


xntfs:FSKit + ntfs-3g

xntfs 做的是 NTFS 。底层不是自己重写 NTFS ,而是使用成熟的 ntfs-3g ,把 libntfs-3g 接到 FSKit 的 FSVolume 操作上。

插入 NTFS U 盘后,系统可以自动挂载,读写、创建、删除、重命名这些操作都走 ntfs-3g 的逻辑。它的目标不是做一个商业级磁盘套件,而是让 macOS 获得一个更原生的 NTFS 读写入口。

这也解决了我之前一直觉得别扭的地方:NTFS 明明是非常常见的移动硬盘格式,但在 macOS 上一直像一个“外来格式”。xntfs 想做的就是把这层隔阂尽量抹平。

xlinuxfs:FSKit + LKL / lklfuse

xlinuxfs 更有意思一些。它使用的是 lklfuse 方案,也就是把 LKL ( Linux Kernel Library )跑在 macOS 进程内,再通过 FSKit 暴露给系统。

换句话说,ext4 、XFS 、Btrfs 这些文件系统不是重新实现一遍,而是尽量交给 Linux 自己的文件系统驱动处理。对我来说,这是这个项目最关键的点:它不是“仿 Linux 文件系统”,而是把 Linux 文件系统能力接进 macOS 的 FSKit 。

目前 xlinuxfs 支持的几个格式都可以读写。这样一来,macOS 对 NTFS 、ext4 、XFS 、Btrfs 这些常见跨系统磁盘的隔阂会小很多。Windows 盘、Linux 盘、NAS 拆下来的盘、开发测试用的镜像,都可以更自然地出现在 Finder 和 /Volumes 里。

据我目前了解,这是 lklfuse 这类方案第一次在 macOS 上通过 FSKit 做到实际可用的实现。它的意义不只是“能挂 ext4”,而是证明 macOS 也可以通过用户态 FSKit 扩展,把 Linux 文件系统驱动比较自然地接进系统挂载流程。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions