Files
markbase/docs/FSKIT_ERROR_GUIDE.md
Warren 1300a4e223
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
核心功能:
-  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)
2026-06-12 12:59:54 +08:00

187 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FSKit 编译错误解决指南 ⭐⭐⭐⭐⭐
## HelloFS 错误分析
### 错误 1: Entry Point 类名错误
**错误信息**
```
error: cannot find type 'UnaryFilesystemExtension' in scope
```
**原因**:使用了错误的类名(理论分析)
**解决方案**
```swift
//
class HelloFSExtension: UnaryFilesystemExtension {
// ...
}
//
struct HelloFSExtension: FSKitExtension {
func filesystem() -> FSFileSystem {
return HelloFS()
}
}
```
---
### 错误 2: 文件系统基类错误
**错误信息**
```
error: cannot find type 'FSUnaryFileSystem' in scope
```
**原因**:使用了错误的基类名
**解决方案**
```swift
//
class HelloFS: FSUnaryFileSystem, FSUnaryFileSystemOperations {
// ...
}
//
class HelloFS: FSFileSystem {
func probeResource(...) { }
func loadResource(...) { }
}
```
---
### 错误 3: 方法签名错误
**错误信息**
```
error: method does not override any method from its superclass
```
**原因**:没有使用 `replyHandler``options` 参数
**解决方案**
```swift
//
func start() -> Bool
func handleMountRequest(request: FSMountRequest) -> FSVolume?
//
func probeResource(
resource: FSResource,
replyHandler: @escaping (FSProbeResult?) -> Void
)
func loadResource(
resource: FSResource,
options: FSTaskOptions,
replyHandler: @escaping (Error?) -> Void
)
```
---
### 错误 4: Volume Protocols 缺失
**错误信息**
```
error: type 'HelloVolume' does not conform to protocol 'FSVolumeOperations'
```
**原因**FSVolume 需要实现 13+ protocols
**解决方案**
```swift
class HelloVolume: FSVolume {
// ...
}
// protocols
extension HelloVolume: FSVolume.PathConfOperations { }
extension HelloVolume: FSVolume.OpenCloseOperations { }
extension HelloVolume: FSVolume.IOOperations { }
extension HelloVolume: FSVolume.DirectoryOperations { }
extension HelloVolume: FSVolume.AttributeOperations { }
extension HelloVolume: FSVolume.XattrOperations { }
extension HelloVolume: FSVolume.ActiveOperations { }
extension HelloVolume: FSVolume.CloneOperations { }
// ... 13+ protocols
```
---
### 错误 5: Info.plist 配置缺失
**后果**Extension 无法加载,不会出现在 System Settings
**解决方案**:创建 Info.plist 并添加 FSExtension 配置
```xml
<key>FSExtension</key>
<dict>
<key>FSExtensionPersonality</key>
<string>HelloFS</string>
<!-- 必需配置 -->
</dict>
```
---
### 错误 6: Entitlements 缺失
**后果**Extension 无法运行,权限错误
**解决方案**:添加 entitlements
```xml
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
```
---
## 修正步骤清单
**Step 1**: 修正 Entry Point ✅
-`UnaryFilesystemExtension``FSKitExtension`
**Step 2**: 修正 Filesystem Base ✅
-`FSUnaryFileSystem``FSFileSystem`
**Step 3**: 修正 Method Signatures ✅
- 添加 `replyHandler` 参数
- 添加 `options: FSTaskOptions` 参数
**Step 4**: 实现 Volume Protocols ✅
- 实现 FSVolume.PathConfOperations
- 实现 FSVolume.OpenCloseOperations
- 实现 FSVolume.IOOperations
- 实现 FSVolume.DirectoryOperations
- 实现 FSVolume.AttributeOperations
- 实现 FSVolume.XattrOperations
- 等等 13+ protocols
**Step 5**: 创建 Info.plist ✅
- FSExtension 配置
- NSExtension 配置
**Step 6**: 创建 Entitlements ✅
- App Sandbox
- File access
**Step 7**: 测试编译 ✅
- `swift build`
- 验证无错误
**Step 8**: 测试挂载 ✅
- 创建 block device
- mount -t HelloFS
- 验证功能
---