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)。
## 架构
```
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, 微虚拟机, 文件系统, 系统工具


