Files
markbase/docs/FSKIT_DRIVER_TODO.md
Warren 71fa48a626 System Extension注册完成 + FSKit Driver待办事项
已完成:
 App ID(6770506571)
 Bundle ID(com.momentry.markbase.fskit)
 Developer ID Application证书导入
 .app Bundle创建(build/MarkBaseFSKit.app)
 entitlements.plist配置

限制:
- binary未实现FSKit driver(占位符)
- 无法通过systemextensionsctl install安装
- 需要完整FSKit接口实现

策略:
- 短期:WebDAV(500 MB/s)
- 长期:FSKit Driver完整实现(650 MB/s)

文档:
- SYSTEM_EXTENSION_MANUAL_INSTALL.md
- FSKIT_DRIVER_TODO.md(未来待办)
2026-05-18 20:45:50 +08:00

4.7 KiB
Raw Blame History

FSKit Driver 完整实现待办事项

当前状态

已完成基础(可保留):

  • App ID注册Apple ID: 6770506571
  • Bundle ID: com.momentry.markbase.fskit
  • Developer ID Application证书导入
  • .app Bundle创建build/MarkBaseFSKit.app
  • entitlements.plist配置

当前限制:

  • binary未实现FSKit driver接口占位符
  • 无法作为System Extension安装需要完整driver

FSKit Driver完整实现要求

需要实现的trait/接口

1. FSFileSystem文件系统

  • fskit_volume_for_identifier() - 根据identifier获取volume
  • Volume注册/卸载机制

2. FSVolume

  • Volume标识符管理
  • Volume状态跟踪

3. FSVolumeOperations卷操作9个方法

create_item()       - 创建文件/文件夹
delete_item()       - 删除节点
move_item()         - 移动节点
rename_item()       - 重命名
lookup_item()       - 查找节点
fetch_attributes()  - 获取文件属性
fetch_contents()    - 读取文件内容
write_contents()    - 写入文件内容
create_directory()  - 创建目录

4. FSVolumeReadWriteOperations读写操作

  • 文件读写优化
  • 缓存机制

5. FSItem文件系统项

  • SQLite node_id → FSItem映射
  • 文件属性封装

实现技术栈

Rust依赖

objc2-fs-kit = "0.3.2"  # FSKit bindings
objc2-foundation = "0.3"  # NSString等基础类型
rusqlite = "0.32"  # SQLite backend

关键技术:

  • Objective-C runtime通过objc2库
  • declare_class!宏定义Objective-C类
  • SQLite backendMarkBaseFS现有实现
  • macOS System Extension框架

实现步骤(未来)

Phase 1FSVolumeOperations基础实现

  • 实现lookup_item()已有query_node基础
  • 实现fetch_attributes()已有FileNodeData
  • 实现fetch_contents()已有read_file基础

Phase 2写入操作实现

  • 实现create_item()SQLite insert
  • 实现write_contents()(文件写入)
  • 实现delete_item()SQLite delete

Phase 3高级操作实现

  • 实现move_item()parent_id修改
  • 实现rename_item()label修改
  • 实现create_directory()folder节点

Phase 4FSKit driver注册

  • 实现FSFileSystem接口
  • Volume注册机制
  • System Extension打包

Phase 5System Extension安装

  • 使用已有的.app Bundle
  • 重新编译完整driver binary
  • 系统批准流程

技术挑战

1. Objective-C runtime复杂性

  • declare_class!宏语法复杂
  • Objective-C对象生命周期管理
  • 需要熟悉Objective-C消息传递机制

2. FSKit framework限制

  • Apple官方文档较少
  • 需要通过objc2-fs-kit头文件理解接口
  • 可能遇到macOS版本兼容性问题

3. 性能优化

  • SQLite查询优化12659 nodes
  • 文件读写缓存
  • 多线程并发处理

预估时间

阶段 时间 难度
Phase 1基础操作 3-5天 中等
Phase 2写入操作 2-3天 中等
Phase 3高级操作 2-3天
Phase 4driver注册 3-5天
Phase 5安装调试 2-3天 中等
总计 12-18天

资源需求

知识储备:

  • Objective-C runtime
  • FSKit framework
  • macOS System Extension架构

参考资料:

现有代码基础:

  • MarkBaseFS简化版src/fskit/filesystem.rs
  • SQLite backend已验证12659 nodes
  • warren数据库16.15 GB数据

与WebDAV方案对比

特性 WebDAV短期 FSKit Driver长期
实现难度
实现时间 1-2天 12-18天
性能 500 MB/s 650 MB/s
macOS集成 HTTP/SMB Native FSKit
Finder挂载 网络驱动器 原生卷
生产可用 立即 未来
System Extension 不需要 需要

建议

短期(现在): 使用WebDAV方案

  • 利用已有MarkBaseFS backend
  • 快速实现可用版本
  • 满足500 MB/s性能需求

长期(未来): 完整实现FSKit driver

  • 保留System Extension注册基础
  • 学习Objective-C runtime
  • 逐步实现FSKit接口
  • 达到650 MB/s原生性能

下一步行动

WebDAV实施计划

  1. MarkBaseFS backend集成到WebDAV handler
  2. HTTP server启动测试
  3. Finder连接验证
  4. AJA System Test性能验证

FSKit Driver保留

  • 所有注册配置保留App ID、证书等
  • 未来需要时可继续开发
  • 当前POC代码可作为参考

最后更新: 2026-05-18 20:45