Files
markbase/docs/FSKIT_DRIVER_TODO.md
T
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