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

11 KiB
Raw Permalink Blame History

Deshab 系统开发策划

文档盘点、实现矩阵、阻塞风险、里程碑策划。ROADMAP的补充(补上兼容层/桌面/包管理等用户态生态主线)。


一、文档整理

1.1 文档地图

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 里程碑总览

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 依赖关系

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
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