2026-07-29 10:26:25 +08:00
|
|
|
|
# Deshab 系统开发策划
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
> 文档盘点、实现矩阵、阻塞风险、里程碑策划。ROADMAP的补充(补上兼容层/桌面/包管理等用户态生态主线)。
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 一、文档整理
|
|
|
|
|
|
|
|
|
|
|
|
### 1.1 文档地图
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
2026-07-31 13:53:49 +08:00
|
|
|
|
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/上下文/ 开发对话记录(待提炼为正式设计文档)
|
2026-07-29 10:26:25 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 1.2 文档同步状态
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
2026-07-29已同步:ROADMAP/ARCHITECTURE/BOOT_SEQUENCE/Bug记录。关键偏差均已修正(如§9.2旋转环描述、console_fb圆弧已移除、B4正常路径已实现login→desktop)。
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
**关键发现**:`docs/上下文/`下四份开发记录(双内核/Linux EXE/桌面UI/Pacman)构成ROADMAP未收录的**用户态与生态主线**。
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 二、实现盘点
|
|
|
|
|
|
|
|
|
|
|
|
### 2.1 子系统实现状态矩阵
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 子系统 | 状态 | 主要缺口 |
|
|
|
|
|
|
|--------|------|---------|
|
|
|
|
|
|
| 早期启动(serial/IDT/PIC) | ✅ | — |
|
|
|
|
|
|
| DKM驱动加载(14驱动) | ✅ | ABI头未统一、warning未清零 |
|
|
|
|
|
|
| DMA分配器 | ✅ | — |
|
|
|
|
|
|
| UTSM封缄内存 | 🔶 | 真实加密原语未选型 |
|
|
|
|
|
|
| AHCI块设备 | ✅ | 单扇区偶发超时 |
|
|
|
|
|
|
| NVMe | 🔶 | BAR0>4G,待高位MMIO |
|
|
|
|
|
|
| FAT32 | 🔶 | DKM只读;DSK读写(根目录),子目录写待补 |
|
|
|
|
|
|
| e1000网络 | ✅ | 中断驱动收发(仍polling) |
|
|
|
|
|
|
| virtio_net | 🔶 | 无feature negotiation/virtqueue |
|
|
|
|
|
|
| 字体系统 | ✅ | — |
|
|
|
|
|
|
| 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
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 三、阻塞与风险
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 关键阻塞点
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| # | 阻塞点 | 严重度 | 缓解 |
|
|
|
|
|
|
|---|--------|--------|------|
|
|
|
|
|
|
| B1 | ~~block write~~ ✅已解决 | — | AHCI WRITE DMA+block_api.write已落地 |
|
|
|
|
|
|
| **B2** | 高位PCI MMIO映射缺失(4G以上BAR) | P1 | Phase 0页表映射接口 |
|
|
|
|
|
|
| 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** | IDT仅0–47,无vector allocator/APIC EOI | P2 | Phase 2 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 3.2 风险登记
|
|
|
|
|
|
|
|
|
|
|
|
| 风险 | 概率 | 影响 | 应对 |
|
|
|
|
|
|
|------|------|------|------|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| VMX实机验证长期受阻 | 中 | 高 | 构建产物已就位;窗口期内争取验证,失败则冻结运行时 |
|
|
|
|
|
|
| ROADMAP与实现态偏离 | 高 | 中 | 本次整理后同步 |
|
|
|
|
|
|
| docs/上下文/对话膨胀 | 高 | 中 | 提炼为正式设计文档 |
|
|
|
|
|
|
| UTSM真实加密原语选型拖延 | 中 | 高 | Phase 9前完成PoC |
|
|
|
|
|
|
| PE32+原生执行安全风险 | 中 | 中 | PE shim白名单+IAT拦截审计 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 四、开发策划
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 策划原则
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
先闭环再扩展;解阻塞优先于新功能;内核主线与生态主线并行;不破坏SAS-R0/O(1)热路径;文档与代码同步。
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 4.2 里程碑总览
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
2026-07-31 13:53:49 +08:00
|
|
|
|
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集成
|
|
|
|
|
|
```
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 4.3 M1 — 持久化闭环+桌面稳定
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 任务 | 验收标准 |
|
|
|
|
|
|
|------|---------|
|
|
|
|
|
|
| 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稳定 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 4.4 M2 — 存储升级+中断后端
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 任务 | 验收标准 |
|
|
|
|
|
|
|------|---------|
|
|
|
|
|
|
| 页表映射接口 | mmio_map/unmap通用接口 |
|
|
|
|
|
|
| 高位PCI MMIO映射(B2) | NVMe BAR0可读register |
|
|
|
|
|
|
| 替换arena为真实页分配 | 移除16MB arena上限 |
|
|
|
|
|
|
| NVMe admin queue/identify+block provider | 注册nvme0 |
|
|
|
|
|
|
| IDT扩展256 vectors+vector allocator | 动态分配中断向量 |
|
|
|
|
|
|
| APIC EOI→IOAPIC redirection→LAPIC timer | 替代PIC |
|
|
|
|
|
|
| MSI/MSI-X | NVMe/e1000使用MSI-X |
|
|
|
|
|
|
| e1000中断驱动收发 | 替代polling |
|
|
|
|
|
|
| virtio-net virtqueue RX/TX | 收发包成功 |
|
|
|
|
|
|
| DKM工程化收尾 | 统一ABI头、零warning |
|
|
|
|
|
|
|
|
|
|
|
|
### 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可用 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 4.6 M4 — 调度器+恢复+加密
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 任务 | 验收标准 |
|
|
|
|
|
|
|------|---------|
|
|
|
|
|
|
| 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通过 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 4.7 M5 — 软件生态
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 任务 | 验收标准 |
|
|
|
|
|
|
|------|---------|
|
|
|
|
|
|
| FILE_TRANSFER+EXEC_FORWARD hypercall | 跨内核文件传输+命令委托 |
|
|
|
|
|
|
| shell path_search_and_run扩展 | PATH命中stub→IPC委托 |
|
|
|
|
|
|
| pacman装包+AUR helper | `pacman -S <pkg>`成功 |
|
|
|
|
|
|
| desktop动态Linux命令图标 | 点击图标运行Linux应用 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 4.8 依赖关系
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
```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集成
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
## 五、文档治理建议
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
**立即**:同步ROADMAP状态标记;结构化Bug记录(BUG-YYYYMMDD-NNN模板)。
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
**中期**:`docs/上下文/双内核+Linux_EXE`→`docs/兼容层设计.md`;`docs/上下文/桌面UI`→`docs/桌面设计.md`;Pacman→合并进兼容层设计§生态。
|
|
|
|
|
|
|
|
|
|
|
|
**长期**:PR必须同步ROADMAP+设计文档;test-cases关联可执行脚本;CLAUDE.md季度回顾。
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 六、附录:关键技术参考速查
|
|
|
|
|
|
|
|
|
|
|
|
### 6.1 关键地址与魔数
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 项 | 值 |
|
|
|
|
|
|
|----|-----|
|
|
|
|
|
|
| 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) |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 6.2 关键约束清单
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
- 进入C前cli/cld;早期serial不无限等待ready位
|
|
|
|
|
|
- 未启用SSE前-mno-sse -mno-sse2 -mno-mmx -msoft-float
|
|
|
|
|
|
- DATA/BSS用PF_R|PF_W|PF_X
|
2026-07-29 10:26:25 +08:00
|
|
|
|
- DSK ibuf 1MB;g_dsk_fat32_filedata 2MB;g_fdata 1MB
|
2026-07-31 13:53:49 +08:00
|
|
|
|
- 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
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 6.3 关键文件索引
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 模块 | 文件 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| UTSM入口 | `CODE/UTSM/kernel/main.c` |
|
|
|
|
|
|
| DSK加载 | `CODE/UTSM/kernel/dsk_loader.c` |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
| boot context | `CODE/UTSM/include/utsm/dsk.h` |
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 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` |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
| Linux compat | `CODE/UTSM/vmm/linux_compat.c` |
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| IPC | `CODE/utsm-ipc/ipc_proto.h` |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
| exec daemon | `CODE/linux/initramfs/bin/utsm_exec_daemon.c` |
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| DSK | `CODE/dsk/main.c` |
|
|
|
|
|
|
| 桌面 | `CODE/desktop/main.c` |
|
|
|
|
|
|
| shell/cmd | `CODE/shell/main.c`, `CODE/cmd/main.c` |
|
|
|
|
|
|
| FAT32镜像 | `.build_tmp/mkfat32.ps1` |
|