Files
Deshab-OS/docs/系统开发策划.md
xyou 8717ea8f20 docs: 多智能体推进收尾交接文档 + Bug记录/策划文档状态修正
新增 docs/上下文/260805/交接文档-多智能体推进收尾.md:W2-W6 全程成果、W6 丢失项、Bug 状态核对、下一步优先级、环境坑点

Bug记录.txt: BUG-005/006/007 状态 OPEN->FIXED(代码已修于 a26866e,文档过时未同步)

系统开发策划.md: M2 进度更新(vector allocator/LAPIC EOI 标完成,MSI-X 标 NVMe完成/virtio_net待做,B7 阻塞点更新)
2026-08-05 14:08:11 +08:00

234 lines
11 KiB
Markdown
Raw Permalink 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.
# Deshab 系统开发策划
> 文档盘点、实现矩阵、阻塞风险、里程碑策划。ROADMAP的补充(补上兼容层/桌面/包管理等用户态生态主线)。
---
## 一、文档整理
### 1.1 文档地图
```text
docs/ARCHITECTURE.md 五大支柱+子系统现状
docs/BOOT_SEQUENCE.md 五阶段启动模型
docs/ROADMAP.md Phase 0–9路线图
docs/系统开发策划.md ← 本文档
docs/兼容层设计.md Linux/PE兼容层
docs/桌面设计.md 桌面环境
docs/RE/ UTSM_设计架构/算法记录/驱动模块ABI设计/Bug记录(12条)/test-cases(8份)/docs/
docs/上下文/ 开发对话记录(待提炼为正式设计文档)
```
### 1.2 文档同步状态
2026-07-29已同步:ROADMAP/ARCHITECTURE/BOOT_SEQUENCE/Bug记录。关键偏差均已修正(如§9.2旋转环描述、console_fb圆弧已移除、B4正常路径已实现login→desktop)。
**关键发现**:`docs/上下文/`下四份开发记录(双内核/Linux EXE/桌面UI/Pacman)构成ROADMAP未收录的**用户态与生态主线**。
---
## 二、实现盘点
### 2.1 子系统实现状态矩阵
| 子系统 | 状态 | 主要缺口 |
|--------|------|---------|
| 早期启动(serial/IDT/PIC) | ✅ | — |
| DKM驱动加载(14驱动) | ✅ | ABI头未统一、warning未清零 |
| DMA分配器 | ✅ | — |
| UTSM封缄内存 | 🔶 | 真实加密原语未选型 |
| AHCI块设备 | ✅ | 单扇区偶发超时 |
| NVMe | ✅ | 写路径+PRP list+读回校验已完成 |
| FAT32 | 🔶 | DKM只读;DSK读写(根目录),子目录写待补 |
| e1000网络 | ✅ | 中断驱动收发(仍polling) |
| virtio_net | ✅ | virtqueue RX/TX+netdev注册+DHCP自测已完成 |
| 字体系统 | ✅ | — |
| FirstInit | 🔶 | B6按键崩溃修复中;鼠标仍轮询 |
| 正常启动路径 | ✅ | — |
| desktop.elf | ✅ | 脏矩形未做 |
| shell.elf / cmd.elf | ✅ | — |
| Linux兼容层 | 🔶 | VMX实机验证待做(需嵌套虚拟化环境) |
| PE/EXE兼容层 | ✅ | Win32 API覆盖少 |
| virtio-mmio模拟 | 🔶 | blk已支撑guest rootfs;net后端未在guest验证 |
| SAS-R0-PCQ调度器 | ⬜ | 未实现 |
| DRR恢复系统 | ⬜ | 未实现 |
| 真实加密 | ⬜ | 原语未选型 |
| Pacman包管理 | 🔶 | 依赖VMX验证+virtio-net后端 |
### 2.2 关键能力清单
- **kernel_api**:log/rsdp/fb_*/boot_modules/irq_register/hhdm/dma.alloc_pages/block(read@+0xA8,write@+0x18)/net
- **dsk_boot_context**:magic `0x44534B31424F4F54`,reserved[4]=pe_service,reserved[5]=linux_compat_service
- **PE service**:load/run/unload(PE32+原生Ring0,PE32走x86emu32)
- **Linux compat service**:exec(path,argv)→IPC EXEC_REQUEST(16)→daemon fork+exec→STDOUT/STDERR/EXIT
- **IPC**:1MB共享内存@GPA 0x04000000,9+5 hypercall,VMCALL RAX=`0x5554534D48430000|op`
- **FAT32**:f32_read_root_file / f32_write_root_file
---
## 三、阻塞与风险
### 3.1 关键阻塞点
| # | 阻塞点 | 严重度 | 缓解 |
|---|--------|--------|------|
| B1 | ~~block write~~ ✅已解决 | — | AHCI WRITE DMA+block_api.write已落地 |
| B2 | ~~高位PCI MMIO映射缺失~~ ✅已解决 | — | NVMe BAR0可读,写路径+PRP list+读回校验通过 |
| B3 | ~~WSL构建阻塞~~ ✅已解决 | — | bzImage/initrd/rootfs已产出 |
| **B4** | QEMU TCG不支持VMX | P0 | 真机VT-x/KVM/云VM验证;WHPX检测已落地 |
| B5 | ~~fileman QEMU exit~~ ✅已解决 | — | linker.ld BSS NOBITS分离+g_elf_image扩至1MB |
| **B6** | FirstInit按键崩溃 | P1 | fb_text边界检查+编译优化降级调试中 |
| **B7** | APIC/IOAPIC stage1+2 已落地 + NVMe MSI-X 完成 | P2 | UTSM LAPIC EOI 钩子已落地;vector allocator 已落地;NVMe MSI-X 已完成;剩余:virtio_net/e1000 MSI-X、真机冒烟 |
### 3.2 风险登记
| 风险 | 概率 | 影响 | 应对 |
|------|------|------|------|
| VMX实机验证长期受阻 | 中 | 高 | 构建产物已就位;窗口期内争取验证,失败则冻结运行时 |
| ROADMAP与实现态偏离 | 高 | 中 | 本次整理后同步 |
| docs/上下文/对话膨胀 | 高 | 中 | 提炼为正式设计文档 |
| UTSM真实加密原语选型拖延 | 中 | 高 | Phase 9前完成PoC |
| PE32+原生执行安全风险 | 中 | 中 | PE shim白名单+IAT拦截审计 |
---
## 四、开发策划
### 4.1 策划原则
先闭环再扩展;解阻塞优先于新功能;内核主线与生态主线并行;不破坏SAS-R0/O(1)热路径;文档与代码同步。
### 4.2 里程碑总览
```text
M1 持久化闭环+桌面稳定 (2–4周) B1→FAT32 write→FirstInit写盘→桌面bug
M2 存储升级+中断后端 (4–8周) B2高位MMIO→NVMe→B7 APIC/IOAPIC/MSI-X→e1000中断驱动
M3 兼容层验证 (与M2并行) B3/B4→Linux guest→IPC→Arch rootfs
M4 调度器+恢复+加密 (8–16周) SAS-R0-PCQ→DRR→真实加密
M5 软件生态 (依赖M3) Pacman→AUR→desktop集成
```
### 4.3 M1 — 持久化闭环+桌面稳定
| 任务 | 验收标准 |
|------|---------|
| AHCI WRITE DMA | dkm_block_api.write注册 |
| FAT32文件覆写/创建 | f32_write_root_file可写user.conf/firstInit.txt |
| FAT32 FAT链分配 | 新文件可创建、可追加 |
| FirstInit user.conf写盘 | 重启后login可读取 |
| FirstInit鼠标光标 | PS/2 IRQ12+包解码+24×24光标 |
| 桌面fileman崩溃修复(B5) | fileman可正常使用 |
| FirstInit按键崩溃修复(B6) | -O2下fb_text稳定 |
### 4.4 M2 — 存储升级+中断后端
| 任务 | 验收标准 | 进度 |
|------|---------|------|
| 页表映射接口 | mmio_map/unmap通用接口 | ✅ |
| 高位PCI MMIO映射(B2) | NVMe BAR0可读register | ✅(NVMe 数据路径已验证) |
| 替换arena为真实页分配 | 移除16MB arena上限 | |
| NVMe admin queue/identify+block provider | 注册nvme0 | ✅ 写路径+PRP list+读回校验完成 |
| IDT扩展256 vectors+vector allocator | 动态分配中断向量 | ✅ bitmap+ctzll,0x40-0xDF池,O(1)(commit 019585f) |
| APIC EOI→IOAPIC redirection→LAPIC timer | 替代PIC | ✅ stage1+2 完成(LAPIC接管/MADT/IOREDTBL/apic_route开关/tick链路验证/LAPIC EOI钩子/legacy IRQ1/12/11持续投递验证) |
| MSI/MSI-X | NVMe/e1000使用MSI-X | 🔶 NVMe MSI-X 完成(nvme_msi开关+幽灵CQE防御);virtio_net MSI-X 未完成(W6-B丢失);e1000 仍 legacy IRQ11 |
| e1000中断驱动收发 | 替代polling | ⬜ 仍 polling(走 legacy IRQ11 已通,MSI 切换待做) |
| virtio-net virtqueue RX/TX | 收发包成功 | ✅ virtqueue RX/TX+netdev注册+DHCP自测完成(纯轮询,MSI-X 待做) |
| DKM工程化收尾 | 统一ABI头、零warning | |
| QEMU测试套件脚本化 | Run-All 全用例自动化 | ✅ 9 用例(8+deaicup-e2e)全自动化 PASS |
### 4.5 M3 — 兼容层验证
| 任务 | 验收标准 |
|------|---------|
| Linux 6.6 LTS构建+VMX运行环境 | bzImage+initramfs生成,真机VT-x或KVM可用 |
| VMX自测→Linux guest跑到shell | initramfs busybox shell可交互 |
| utsm_exec_daemon运行 | EXEC_READY(20)发送,park生效 |
| virtio-blk/net后端验证 | guest内可读写块/DHCP/ping |
| IPC exec全链路 | `linux ls`→stdout回显 |
| Arch rootfs bootstrap | pacman可用 |
### 4.6 M4 — 调度器+恢复+加密
| 任务 | 验收标准 |
|------|---------|
| SAS-R0-PCQ: TCB+task_create, Per-CPU runqueue, O(1)位图调度, context_switch(只加载crypto指针), task_kill crypto erase | 多任务调度运行 |
| DRR: Emergency Pool, Watchdog, Recovery log, Dirty Shard+Bitmap, A/B Checkpoint双槽, 三级Rollback, 驱动recovery ops | checkpoint/rollback演示 |
| 真实加密: 原语选型PoC(HKDF+AES-CTR+Poly1305), KDF, Stream cipher(64B line), MAC(4KB page), PCKC真实key schedule | UTSM真实加密selftest通过 |
### 4.7 M5 — 软件生态
| 任务 | 验收标准 |
|------|---------|
| FILE_TRANSFER+EXEC_FORWARD hypercall | 跨内核文件传输+命令委托 |
| shell path_search_and_run扩展 | PATH命中stub→IPC委托 |
| pacman装包+AUR helper | `pacman -S <pkg>`成功 |
| desktop动态Linux命令图标 | 点击图标运行Linux应用 |
### 4.8 依赖关系
```text
B1(block write)→FAT32 write→user.conf写盘→M1闭环
B2(高位MMIO)→NVMe; B7(IRQ后端)→APIC/IOAPIC/MSI-X→e1000中断驱动+virtio-net
B3(Linux构建)+B4(VMX环境)→VMX验证→guest shell→daemon→IPC→Arch rootfs
M1→M4调度器→DRR→真实加密; Arch rootfs→M5 Pacman→AUR→desktop集成
```
---
## 五、文档治理建议
**立即**:同步ROADMAP状态标记;结构化Bug记录(BUG-YYYYMMDD-NNN模板)。
**中期**:`docs/上下文/双内核+Linux_EXE`→`docs/兼容层设计.md`;`docs/上下文/桌面UI`→`docs/桌面设计.md`;Pacman→合并进兼容层设计§生态。
**长期**:PR必须同步ROADMAP+设计文档;test-cases关联可执行脚本;CLAUDE.md季度回顾。
---
## 六、附录:关键技术参考速查
### 6.1 关键地址与魔数
| 项 | 值 |
|----|-----|
| dsk_boot_context.magic | `0x44534B31424F4F54` "DSK1BOOT" |
| dkm_driver_desc.magic | `0x444B4D31` "DKM1" |
| VMCALL RAX | `0x5554534D48430000|op` "UTSMHC\0\0" |
| IPC共享内存GPA | `0x04000000`(1MB) |
| Linux guest RAM GPA | `0x05000000+`(64MB) |
| block_read偏移 | `kernel_api + 0xA8`(read@+0x10, write@+0x18) |
| pe_service槽 | `reserved[4]` |
| linux_compat_service槽 | `reserved[5]` |
| IPC exec消息号 | 16–20 |
| ipc_exec_request约束 | ≤240字节 |
| virtio-blk/net IRQ | 5/6(向量0x35/0x36) |
### 6.2 关键约束清单
- 进入C前cli/cld;早期serial不无限等待ready位
- 未启用SSE前-mno-sse -mno-sse2 -mno-mmx -msoft-float
- DATA/BSS用PF_R|PF_W|PF_X
- DSK ibuf 1MB;g_dsk_fat32_filedata 2MB;g_fdata 1MB
- FAT32批量读≥8扇区(推荐256);DSK linker.ld BSS分离NOBITS
- mkfat32.ps1 Name83正好11字符;Linux guest cmdline含nohlt idle=poll
- VMCS不保存guest GPR,vmexit_asm.S保存16个GPR到g_guest_regs
- 调度热路径禁止扫描capability/计算MAC/写checkpoint/重加密
- DRR recovery路径禁止依赖普通堆;PE32+用__attribute__((ms_abi)) shim
### 6.3 关键文件索引
| 模块 | 文件 |
|------|------|
| UTSM入口 | `CODE/UTSM/kernel/main.c` |
| DSK加载 | `CODE/UTSM/kernel/dsk_loader.c` |
| boot context | `CODE/UTSM/include/utsm/dsk.h` |
| VMM | `CODE/UTSM/vmm/vmm.c/vmexit.c/linux_boot.c/linux_resume.c/vmexit_asm.S` |
| PE兼容层 | `CODE/UTSM/pe/pe_service.c/pe_loader.c/pe_shim.c/x86emu32.c` |
| Linux compat | `CODE/UTSM/vmm/linux_compat.c` |
| IPC | `CODE/utsm-ipc/ipc_proto.h` |
| exec daemon | `CODE/linux/initramfs/bin/utsm_exec_daemon.c` |
| DSK | `CODE/dsk/main.c` |
| 桌面 | `CODE/desktop/main.c` |
| shell/cmd | `CODE/shell/main.c`, `CODE/cmd/main.c` |
| FAT32镜像 | `.build_tmp/mkfat32.ps1` |