216 lines
7.5 KiB
Markdown
216 lines
7.5 KiB
Markdown
# Deshab-OS 开发路线图
|
||
|
||
> 分阶段开发路线。✅已完成 · 🔶部分完成 · ⬜待实现
|
||
|
||
---
|
||
|
||
## 当前状态总览
|
||
|
||
```text
|
||
Limine → utsm.elf → DKM 14驱动 → DSK(deshab.elf)
|
||
→ firstInit=0: mouseInit→netman→FirstInit→user.conf写盘→desktop
|
||
→ firstInit≠0: login→desktop
|
||
```
|
||
|
||
| 子系统 | 状态 | 说明 |
|
||
|--------|------|------|
|
||
| 早期启动 | ✅ | IDT 0–47,PIC remap 0x20–0x2f |
|
||
| UTSM封缄内存 | 🔶 | selftest闭环,占位XOR stream |
|
||
| DKM驱动加载 | ✅ | 14/14闭环 |
|
||
| DMA分配器 | ✅ | 物理页bitmap,低4G钳位 |
|
||
| AHCI块设备 | ✅ | IDENTIFY/READ/WRITE DMA+ahci0 provider |
|
||
| NVMe | 🔶 | PCI discovery only,BAR0>4G待映射 |
|
||
| FAT32 | 🔶 | DKM只读;DSK读写(根目录) |
|
||
| e1000 | ✅ | RX/TX+DHCP/ARP/UDP/DNS,polling |
|
||
| 字体系统 | ✅ | DBF 16/24/32px,GB2312全覆盖 |
|
||
| FirstInit | 🔶 | UI+输入+SHA256密码+写盘;B6按键崩溃修复中 |
|
||
| 正常启动路径 | ✅ | login→desktop |
|
||
| SAS-R0-PCQ | ✅ | O(1)位图调度+LAPIC tick+xv6式切换,selftest闭环 |
|
||
| DRR | 🔶 | 看门狗/快照/回滚闭环(CRC64+AB双槽),MAC仍为占位 |
|
||
|
||
---
|
||
|
||
## Phase 0 — 内存与MMIO底座
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| 物理页bitmap分配器 | ✅ | 已根治e1000 DMA |
|
||
| 页表映射接口(map/unmap) | ⬜ | mmio_map(phys,size,flags)通用接口 |
|
||
| 高位PCI MMIO映射(4G以上BAR) | ⬜ | NVMe BAR0可安全读register |
|
||
| 替换arena为真实页分配 | ⬜ | 移除16MB arena上限 |
|
||
|
||
风险:页表操作需关中断;高位MMIO需独立页表项避免破坏HHDM。
|
||
|
||
---
|
||
|
||
## Phase 1 — DMA与块设备数据路径
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| DMA buffer统一接口 | 🔶 | dkm_dma_api已定义,cache屏障待完善 |
|
||
| AHCI IDENTIFY/READ | ✅ | SATA盘可读LBA0 |
|
||
| AHCI WRITE DMA | ✅ | WRITE DMA EXT(0x35)已注册 |
|
||
| AHCI批量read稳定化 | 🔶 | 256扇区成功,单扇区偶发超时 |
|
||
| AHCI block provider | ✅ | ahci0已注册 |
|
||
| NVMe admin queue/identify | ⬜ | 依赖Phase 0高位MMIO |
|
||
| NVMe block provider | ⬜ | nvme0,支持READ |
|
||
|
||
---
|
||
|
||
## Phase 2 — IRQ后端升级
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| IDT扩展256 vectors | 🔶 | 当前0–47 |
|
||
| Vector allocator | ⬜ | 动态分配中断向量 |
|
||
| APIC EOI后端 | ⬜ | 替代PIC EOI |
|
||
| IOAPIC redirection | ⬜ | 迁移设备IRQ到IOAPIC |
|
||
| LAPIC timer | ⬜ | 替代PIT |
|
||
| MSI/MSI-X | ⬜ | NVMe/e1000使用MSI-X |
|
||
|
||
风险:未扩展IDT前不能禁用PIC或重编IOAPIC RTE。
|
||
|
||
---
|
||
|
||
## Phase 3 — 网络数据路径
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| e1000 RX/TX ring | ✅ | LINK_UP+TX_READY+RX_READY |
|
||
| e1000中断驱动收发 | ⬜ | 替代polling(依赖Phase 2) |
|
||
| virtio-net feature negotiation | ⬜ | 完成 |
|
||
| virtio-net virtqueue RX/TX | ⬜ | 建队列收发包 |
|
||
| 最小协议栈 | ✅ | DHCP+ARP+DNS(netman闭环) |
|
||
|
||
---
|
||
|
||
## Phase 4 — VFS与真实块设备接入
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| FAT32接入真实block provider | 🔶 | 优先block provider回退boot module |
|
||
| FAT32子目录路径解析 | ⬜ | 支持完整路径 |
|
||
| VFS统一路径语义 | ⬜ | DSK与VFS路径统一 |
|
||
| 目录遍历+错误路径完善 | ⬜ | 枚举目录项+正确回退 |
|
||
|
||
---
|
||
|
||
## Phase 5 — block write与FAT32 write
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| dkm_block_api.write | ✅ | AHCI WRITE DMA EXT已注册(@+0x18) |
|
||
| FAT32文件创建/FAT链更新/覆写 | ✅ | user.conf/firstInit.txt已写盘 |
|
||
| firstInit.txt标志写盘 | ✅ | dsk_persist_userconf写1\n+dev_mode |
|
||
|
||
注:写路径当前由DSK内嵌FAT32实现,DKM fat32驱动仍只读。
|
||
|
||
---
|
||
|
||
## Phase 6 — FirstInit完善
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| 按键崩溃修复(B6) | 🔶 | fb_text在-O2下稳定 |
|
||
| 鼠标光标移动 | ⬜ | PS/2 IRQ12+包解码+光标 |
|
||
| user.conf写盘 | ✅ | 重启后login可读取 |
|
||
| 网络配置界面+时区/语言 | ⬜ | — |
|
||
| 设置完成后跳转+正常启动路径 | ✅ | FirstInit返回→持久化→desktop |
|
||
|
||
---
|
||
|
||
## Phase 7 — SAS-R0-PCQ调度器
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| TCB+task_create | 🔶 | 64槽TCB+entry/arg/stack;process_uuid/cap table待接 |
|
||
| Per-CPU runqueue | 🔶 | 结构就位(8 CPU),当前BSP-only |
|
||
| O(1)位图调度器 | ✅ | ready_bitmap ctz选 prio0最高,selftest PASS |
|
||
| context_switch | ✅ | xv6式栈切换(switch.S),只触碰crypto指针 |
|
||
| task_kill crypto erase | ⬜ | key_epoch++, state=DESTROYED |
|
||
|
||
tick源=LAPIC timer宿主自持(arch/x86_64/lapic_timer.c);demo窗口含tick失速兜底;
|
||
selftest含runqueue O(1)、block/wake、看门狗负向测试(demo_fault=1检出+回滚)。
|
||
|
||
风险:切换路径禁止扫描capability/计算MAC/重加密。
|
||
|
||
---
|
||
|
||
## Phase 8 — DRR恢复系统
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| Emergency Pool+Watchdog+Recovery log | 🔶 | 看门狗register/kick/timeout闭环+负向测试PASS;独立调度器待做 |
|
||
| Dirty Shard+Bitmap | ✅ | snapshot_dirty按shard位图收集dirty页 |
|
||
| A/B Checkpoint双槽 | ✅ | ckpt_a/ckpt_b+CRC64+active slot切换 |
|
||
| Page/Segment/System Rollback | 🔶 | page级回滚+verify PASS;segment/system级待真实加密后验证 |
|
||
| 驱动recovery ops | ⬜ | quiesce/reset/reinit |
|
||
|
||
注:快照区为静态区域(UTSM arena 内),页快照容量编译期 128 页;
|
||
MAC 当前为 CRC64 占位(Phase 9 替换真实 MAC)。
|
||
风险:恢复路径禁用普通堆;Emergency Pool耗尽→system rollback。
|
||
|
||
---
|
||
|
||
## Phase 9 — 真实加密落地
|
||
|
||
| 任务 | 状态 | 验收标准 |
|
||
|------|------|---------|
|
||
| 加密原语选型 | ⬜ | HKDF/BLAKE2/AES-CTR/Poly1305 |
|
||
| KDF+Stream cipher(64B line)+MAC(4KB page) | ⬜ | 占位XOR替换 |
|
||
| DRR root key管理+PCKC key schedule | ⬜ | 真实key schedule |
|
||
|
||
风险:加密原语需在-mno-sse下可用(或此阶段启用SSE/SIMD)。
|
||
|
||
---
|
||
|
||
## 用户态与生态主线
|
||
|
||
| 子系统 | 状态 | 说明 |
|
||
|--------|------|------|
|
||
| desktop.elf | ✅ | 三页面+窗口+任务栏+双命令行+6应用+双缓冲 |
|
||
| shell.elf | ✅ | linux/cp/mv/echo/ls/cat/rm+/bin+lls/lcat+Tab补全 |
|
||
| cmd.elf | ✅ | Windows风格+pe/peinfo |
|
||
| login.elf | ✅ | USER.CONF+skip_login |
|
||
| PE/EXE兼容层 | ✅ | PE32+原生/PE32走x86emu32 |
|
||
| Linux兼容层 | 🔶 | VMM+park-and-resume+IPC exec+文件传输;**VMX运行时验证待VT-x/KVM** |
|
||
| virtio-mmio模拟 | 🔶 | blk/net/rootfs后端;未在真实guest验证 |
|
||
| Pacman | ⬜ | 五阶段方案;Arch rootfs已含pacman |
|
||
|
||
主线依赖:VMX环境→Arch guest pacman→文件传输/命令委托→desktop Linux图标集成。
|
||
|
||
---
|
||
|
||
## DKM工程化收尾
|
||
|
||
| 任务 | 状态 |
|
||
|------|------|
|
||
| 统一驱动ABI公共头 | ⬜ |
|
||
| kernel_api typed sub-struct迁移 | ⬜ |
|
||
| 零warning | ⬜ |
|
||
| QEMU场景自动化 | ⬜ |
|
||
| log API printf变参 | ⬜ |
|
||
|
||
---
|
||
|
||
## 里程碑
|
||
|
||
| 里程碑 | 阶段 | 标志 |
|
||
|--------|------|------|
|
||
| M1 真实块设备启动 | Phase 0+1+4 | 从AHCI/NVMe FAT32读deshab.elf |
|
||
| M2 配置持久化 | Phase 5+6 | FirstInit设置可写盘,重启后正常启动 |
|
||
| M3 网络可用 | Phase 2+3 | DHCP+UDP收发 |
|
||
| M4 多任务调度 | Phase 7 | SAS-R0-PCQ多任务 |
|
||
| M5 容错恢复 | Phase 8+9 | DRR checkpoint/rollback+真实加密 |
|
||
|
||
---
|
||
|
||
## 相关文档
|
||
|
||
- [ARCHITECTURE.md](./ARCHITECTURE.md)
|
||
- [BOOT_SEQUENCE.md](./BOOT_SEQUENCE.md)
|
||
- [兼容层设计.md](./兼容层设计.md)
|
||
- [桌面设计.md](./桌面设计.md)
|
||
- [系统开发策划.md](./系统开发策划.md)
|
||
- [CLAUDE.md](../CLAUDE.md)
|