khr898/ntfsmac

GitHub: khr898/ntfsmac

通过 libkrun microVM 运行 ntfs-3g 并以 NFS 导出的方式,在 Apple Silicon macOS 上实现无需内核扩展和 SIP 修改的 NTFS 读写挂载。

Stars: 25 | Forks: 1

# ntfsmac 在 Apple Silicon macOS 上读写 NTFS —— 无需内核扩展,无需修改 SIP。 封装了 [`anylinuxfs`](https://github.com/nohajc/anylinuxfs)(一个运行着 `ntfs-3g` 的 `libkrun` microVM), 通过仅主机的 `vmnet` 桥接以 NFS 方式导出到 macOS。CLI 优先,GUI 其次。 ## 为什么需要 macOS 没有原生的 NTFS 写入支持。常见的解决方案是使用内核扩展 (受限于较新的 SIP 策略而被阻止)或付费的第三方驱动。ntfsmac 采用了第三种方式:一个 一次性的 Linux microVM 负责实际的 NTFS 写入,而 macOS 仅通过 NFS 挂载它 —— 无需 kext,无需切换 SIP,无需繁琐的系统扩展审批流程。 ## 环境要求 - **仅支持 Apple Silicon (arm64)。** 无 Intel 回退方案。 - macOS 13.0+。 ## 安装 CLI,通过 Homebrew tap: ``` brew tap khr898/ntfsmac brew install ntfsmac ntfsmac diagnose ``` GUI:从 [Releases](../../releases) 下载最新的 ad-hoc 签名 `.dmg` —— 未作为 Homebrew cask 分发(详见[签名与分发](#signing--distribution))。 ## 用法 ``` ntfsmac mount # e.g. disk4s1 — mounts read/write by default ntfsmac unmount ntfsmac diagnose # environment + bridge + helper health check ntfsmac uninstall # removes CLI, runtime state, and the GUI's privileged helper ntfsmac help ``` 在任何命令对其进行操作之前,设备标识符都会通过 `^disk[0-9]+s[0-9]+$` 进行校验 —— 详见 [SECURITY.md](SECURITY.md)。 ## GUI 菜单栏应用(无 Dock 图标):选择驱动器,挂载,然后自动隐藏。菜单栏图标的颜色 说明了所有状态 —— 灰色空闲,蓝色挂载中,绿色已挂载且可读写,黄色已挂载但只读 (日志脏),红色错误。完整的按钮级别规范详见 [GUI-PLAN.md](GUI-PLAN.md)。
ntfsmac popup screenshot 1 ntfsmac popup screenshot 2 ntfsmac popup screenshot 3
## 架构 ``` macOS ── NFS (soft mount) ──> vmnet host-only bridge ──> libkrun microVM ── ntfs-3g ──> NTFS drive ``` 所有用于挂载、卸载或操作 `pf`/路由状态的控制指令,都会通过 SMJobBless XPC helper 处理 —— GUI 从不直接通过 shell 调用 `sudo`。完整的架构和分阶段构建 计划详见:[docs/dev/PLAN.md](docs/dev/PLAN.md)。 ## 签名与分发 仅进行 ad-hoc 签名(`codesign -s -`)—— 无需付费的 Apple Developer 账户,无需公证。 这就是为什么 GUI 以 DMG 格式发布(绝非 Homebrew cask),且 CLI 存放在个人 tap 中(绝不放入 `homebrew-core`)的原因。 ## 状态 采用 CLI 优先的构建方式,目前正处于 Phase 3 GUI 构建阶段。完整的阶段计划详见 [docs/dev/PLAN.md](docs/dev/PLAN.md)。 ## 安全 请按照 [SECURITY.md](SECURITY.md) 报告漏洞,而不是提交公开 issue。 ## License MIT —— 详见 [LICENSE](LICENSE)。
标签:libkrun, NTFS, 微虚拟机, 文件系统, 系统工具