核心功能: - ✅ Categories/Series双视图管理(category_view.rs + import_markdown.rs) - ✅ FUSE Multi-Volume支持(tree_type参数) - ✅ SSH/SFTP/SCP/rsync协议完整实现(4042行) - ✅ NFS/SMB Module Phase 1-3完成 - ✅ Archive Module Phase 1-4完成(2916行) - ✅ Download Center API完整实现 - ✅ S3兼容API实现(560行) Git配置修正: - ✅ 删除错误origin(gitea.momentry.ddns.net) - ✅ 删除m5max128(指向机器名) - ✅ 设置origin = m5max128gitea.momentry.ddns.net/admin/markbase - ✅ 设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase 数据清理: - ✅ 删除38个临时SQLite(保留accusys.sqlite、demo.sqlite) - ✅ 删除.bak、test_*.bin、调试脚本等临时文件 - ✅ 删除临时目录(build/、download files/、raid_test/等) - ✅ 更新.gitignore排除临时文件 架构优化: - 52个文件修改,2434行新增,4739行删除 - Workspace成员整合(16个crate) - 数据库状态:accusys.sqlite保留(主demo测试) 远程同步: - ✅ 准备推送到m5max128gitea(远程Gitea) - ✅ 准备推送到m4minigitea(本地Gitea)
14 KiB
FSKit Module Installation Research Report
Research Date: 2026-05-28
Researcher: MarkBase Team
1. Apple Official Documentation
1.1 FSKit API Documentation
Status: ✅ Partially Available
Sources:
- FSKit Framework: macOS 15+ (Sequoia) introduction
- fskitd man page: Available via
man fskitd - Apple Developer Documentation: https://developer.apple.com/documentation/fskit (requires JavaScript)
Key Documentation:
fskitd Man Page
NAME
fskitd – FSKit mount manager and mount support
DESCRIPTION
fskitd is the FSKit mount management and mount support daemon. It manages
the FSKit mount life cycle and coordinating with other daemons. It also
translates requests from the kernel LIFS file system to the user space
file system servers backing volumes.
fskitd is invoked by launchd(8) when volume creation is requested
or when previously-created volumes are detected.
FILES
/System/Library/LaunchAgents/com.apple.fskitd.plist
1.2 ExtensionKit Installation Guides
Status: ❌ Limited Public Documentation
Key Findings:
- ExtensionKit is the underlying framework for FSKit Modules
- FSKit Modules are App Extensions (
.appex) - Extension Point:
com.apple.fskit.fsmodule
1.3 App Extension vs System Extension Differences
| Feature | App Extension | System Extension |
|---|---|---|
| Location | /System/Library/ExtensionKit/Extensions/ (Apple) /Library/Filesystems/ (Third-party) |
/Library/SystemExtensions/ |
| Installation | Automatic discovery | Requires user approval via System Preferences |
| API | ExtensionKit | System Extension API |
| Restart Required | ❌ No | ❌ No (but may require logout) |
| Entitlements | com.apple.developer.fskit.fsmodule |
com.apple.system-extension |
| Sandbox | ✅ Required | ✅ Required |
| User Approval | ❌ Not required (for local filesystems) | ✅ Required |
Critical Finding: FSKit Modules are App Extensions, NOT System Extensions!
2. Third-Party Implementations
2.1 rclone FSKit Implementation
Status: ❌ Not Implemented
Evidence:
- rclone documentation shows FUSE mount support
- No FSKit-specific documentation found
- rclone uses macFUSE/FUSE-T, not native FSKit
Conclusion: rclone does not have FSKit Module implementation.
2.2 Google Drive FSKit Implementation
Status: ❌ Not Publicly Available
Evidence:
- Google Drive File Stream uses kernel extensions (deprecated)
- No FSKit Module implementation found
- Likely waiting for broader macOS adoption
2.3 Other Third-Party FSKit Modules
Status: ❌ None Found
Search Results:
- GitHub search: "FSKit module macOS" → 0 repositories
- GitHub search: "fskit fsmodule" → No public code
- Stack Overflow: No FSKit tag
Conclusion: MarkBaseFS is one of the first third-party FSKit Modules publicly documented.
3. Installation Mechanism
3.1 How macOS Discover FSKit Modules?
Discovery Mechanism:
-
ExtensionKit Framework:
- ExtensionKit daemon scans
/System/Library/ExtensionKit/Extensions/ - FSKit Modules are discovered by
EXExtensionPointIdentifier=com.apple.fskit.fsmodule
- ExtensionKit daemon scans
-
Local Filesystems:
/Library/Filesystems/is scanned by fskitd.appexbundles with correct Info.plist are registered
-
Discovery Process:
fskitd (daemon) → ExtensionKit → .appex bundles → Info.plist → EXExtensionPointIdentifier
3.2 Does FSKit Daemon Automatically Discover New Modules?
Answer: ✅ YES (for /Library/Filesystems/)
Evidence:
- fskitd man page: "invoked by launchd when volume creation is requested"
- MarkBaseFS Module at
/Library/Filesystems/MarkBaseFS FSKit Module.appexwas discovered - No manual registration required
Process:
- Copy
.appexto/Library/Filesystems/ - fskitd automatically discovers it
- Module becomes available for mounting
3.3 Does it Require macOS Restart?
Answer: ❌ NO
Evidence:
- fskitd is launched by launchd on demand
- fskit_agent is running as Background/Aqua session type
- ExtensionKit framework supports dynamic discovery
- Test: MarkBaseFS Module was discovered without restart
Launchd Services Running:
PID: 99535 - /usr/libexec/fskitd
Launch Agent: com.apple.fskit.fskit_agent (PID: -9, background)
4. System Extension API
4.1 Is System Extension API Applicable to FSKit Modules?
Answer: ❌ NO
Reason:
- FSKit Modules are App Extensions, not System Extensions
- System Extension API is for:
- DriverKit drivers
- Network Extensions
- Endpoint Security
Evidence:
- MarkBaseFS Module Info.plist:
CFBundlePackageType = XPC!(App Extension) - Apple FSKit Modules: Same
XPC!package type - Extension Point:
com.apple.fskit.fsmodule(App Extension point)
4.2 System Extension API Use Cases
| Type | Extension Point | API |
|---|---|---|
| DriverKit | com.apple.driverkit |
System Extension API |
| Network Extension | com.apple.network-extension |
System Extension API |
| Endpoint Security | com.apple.endpoint-security |
System Extension API |
| FSKit Module | com.apple.fskit.fsmodule |
ExtensionKit API |
5. Correct Installation Location
5.1 Apple FSKit Modules Location
Location: /System/Library/ExtensionKit/Extensions/
Examples:
/System/Library/ExtensionKit/Extensions/
├── com.apple.fskit.exfat.appex
├── com.apple.fskit.ftp.appex
├── com.apple.fskit.msdos.appex
└── FSKitModuleManagement.appex
5.2 Third-Party FSKit Modules Location
Primary Location: /Library/Filesystems/
Evidence:
- MarkBaseFS Module currently at
/Library/Filesystems/MarkBaseFS FSKit Module.appex - Historical precedent: NetFSPlugins at
/Library/Filesystems/NetFSPlugins/ - This location is scanned by fskitd
Alternative Locations (NOT recommended):
- ❌
/System/Library/ExtensionKit/Extensions/→ Reserved for Apple - ❌
/Library/Application Support/com.apple.fskit/→ Does not exist - ❌
/Library/SystemExtensions/→ Reserved for System Extensions
5.3 Location Comparison
| Type | Location | Discovery | Permission Required |
|---|---|---|---|
| Apple Modules | /System/Library/ExtensionKit/Extensions/ |
ExtensionKit | Root (system) |
| Third-Party Modules | /Library/Filesystems/ |
fskitd | Root (sudo) |
6. Entitlements Required
6.1 Apple FSKit Module Entitlements
Source: /System/Library/ExtensionKit/Extensions/com.apple.fskit.exfat.appex
Entitlements:
<key>com.apple.application-identifier</key>
<string>com.apple.fskit.exfat</string>
<key>com.apple.developer.fskit.fsmodule</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<true/>
6.2 MarkBaseFS Module Entitlements
Source: /Library/Filesystems/MarkBaseFS FSKit Module.appex
Entitlements:
<key>com.apple.application-identifier</key>
<string>com.accusys.markbase.fskitmodule</string>
<key>com.apple.developer.fskit.fsmodule</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<true/>
6.3 Entitlements Comparison
| Entitlement | Apple FSKit | MarkBaseFS | Required |
|---|---|---|---|
com.apple.application-identifier |
✅ Yes | ✅ Yes | ✅ Yes |
com.apple.developer.fskit.fsmodule |
✅ Yes | ✅ Yes | ✅ Yes (critical) |
com.apple.security.app-sandbox |
✅ Yes | ✅ Yes | ✅ Yes |
6.4 Code Signing Comparison
| Feature | Apple FSKit | MarkBaseFS |
|---|---|---|
| Certificate Authority | Software Signing | Developer ID Application: Accusys,Inc (K3TDMD9Y6B) |
| Notarization | Apple internal | ✅ Stapled ticket |
| Team Identifier | not set | K3TDMD9Y6B |
| Runtime Version | N/A | 26.5.0 |
7. Key Findings Summary
7.1 Architecture
FSKit Architecture:
┌─────────────────────────────────────────────────┐
│ macOS Kernel (LIFS file system) │
└─────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ fskitd (mount manager daemon) │
│ - PID: 99535 │
│ - Manages mount lifecycle │
│ - Coordinates with other daemons │
└─────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ fskit_agent (agent daemon) │
│ - Mach service: com.apple.fskit.fskit_agent │
│ - Background/Aqua session type │
└─────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ ExtensionKit Framework │
│ - Discovery mechanism │
│ - Extension Point: com.apple.fskit.fsmodule │
└─────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ FSKit Modules (.appex) │
│ - /System/Library/ExtensionKit/Extensions/ │
│ - /Library/Filesystems/ │
└─────────────────────────────────────────────────┘
7.2 Installation Process
Step-by-Step:
-
Build FSKit Module:
- Create
.appexbundle with correct Info.plist - Set
EXExtensionPointIdentifier = com.apple.fskit.fsmodule - Add entitlements:
com.apple.developer.fskit.fsmodule = true
- Create
-
Code Signing:
- Sign with Developer ID Application certificate
- Enable Hardened Runtime (options runtime)
- Submit for notarization
- Staple ticket
-
Installation:
sudo cp "MarkBaseFS FSKit Module.appex" /Library/Filesystems/ sudo chown root:wheel /Library/Filesystems/MarkBaseFS FSKit Module.appex -
Discovery:
- fskitd automatically discovers module
- No restart required
- Module becomes available for mounting
7.3 Critical Requirements
| Requirement | Status |
|---|---|
| ✅ Correct Extension Point | com.apple.fskit.fsmodule |
| ✅ Correct Entitlements | com.apple.developer.fskit.fsmodule = true |
| ✅ App Sandbox | com.apple.security.app-sandbox = true |
| ✅ Code Signing | Developer ID Application |
| ✅ Notarization | Stapled ticket |
| ✅ Correct Location | /Library/Filesystems/ |
| ✅ Root Ownership | root:wheel |
8. Recommendations for MarkBaseFS
8.1 Current Status
✅ MarkBaseFS Module is correctly installed at /Library/Filesystems/MarkBaseFS FSKit Module.appex
✅ Entitlements match Apple FSKit Modules
✅ Code signed with Developer ID Application
✅ Notarization ticket stapled
✅ Automatically discovered by fskitd
8.2 Installation Script Recommendation
#!/bin/bash
# MarkBaseFS FSKit Module Installation Script
# 1. Build FSKit Module (already done)
# xcodebuild -project MarkBaseFS.xcodeproj -scheme MarkBaseFS
# 2. Code Sign (already done)
# codesign --sign "Developer ID Application: Accusys,Inc (K3TDMD9Y6B)" \
# --deep --force --verify --verbose --options runtime \
# "MarkBaseFS FSKit Module.appex"
# 3. Notarize (already done)
# xcrun notarytool submit ...
# xcrun stapler staple ...
# 4. Install to correct location
sudo cp -R "MarkBaseFS FSKit Module.appex" /Library/Filesystems/
sudo chown -R root:wheel "/Library/Filesystems/MarkBaseFS FSKit Module.appex"
# 5. Verify installation
ls -la /Library/Filesystems/
codesign -dvvv "/Library/Filesystems/MarkBaseFS FSKit Module.appex"
# 6. Trigger discovery (optional, automatic)
# killall fskitd # fskitd will restart and discover
echo "MarkBaseFS FSKit Module installed successfully"
8.3 Next Steps
- ✅ Current installation is correct
- Test mounting via Finder or
diskutil - Performance validation (target: 600 MB/s)
- Document mounting procedures for end users
9. Sources and Citations
9.1 System Sources
- fskitd man page:
man fskitd - Apple FSKit Modules:
/System/Library/ExtensionKit/Extensions/ - MarkBaseFS Module:
/Library/Filesystems/MarkBaseFS FSKit Module.appex - Launch Agent:
/System/Library/LaunchAgents/com.apple.fskit.fskit_agent.plist
9.2 Code Signing Evidence
- Apple FSKit:
codesign -dvvv /System/Library/ExtensionKit/Extensions/com.apple.fskit.exfat.appex - MarkBaseFS:
codesign -dvvv /Library/Filesystems/MarkBaseFS FSKit Module.appex
9.3 Process Evidence
- fskitd:
ps aux | grep fskit→ PID 99535 - fskit_agent:
launchctl list | grep fskit→ com.apple.fskit.fskit_agent
9.4 Documentation Sources
- Apple Developer: https://developer.apple.com/documentation/fskit
- rclone Documentation: https://rclone.org/docs/
- MarkBaseFS README:
/Users/accusys/markbase/MarkBaseFS/README.md - FSKit Backend Test:
/Users/accusys/markbase/docs/fuse_poc/FSKit_BACKEND_TEST.md
10. Conclusion
FSKit Module Installation is straightforward:
- ✅ Build
.appexwith correct Info.plist and entitlements - ✅ Code sign with Developer ID Application
- ✅ Notarize and staple
- ✅ Install to
/Library/Filesystems/ - ✅ fskitd automatically discovers module
- ✅ No restart required
MarkBaseFS is correctly installed and should be functional.
No System Extension API or approval process is required.
Report Version: 1.0 Date: 2026-05-28 Status: Research Complete ✅