feat: F1/F4/F5 phase-1 skeleton + insane-roadmap docs rework
- docs: ROADMAP_INSANE (five-phase plan), TASKBOARD, STATUS single source of truth, PHILOSOPHY; rewrite README/ARCHITECTURE non-goals; archive ROADMAP phase 0-9; drop contradictory dev-plan doc - F1: unified lotus panic screen (panic_full: fb draw + regs dump + DRR crash archive); IDT exception path and dkm_api_panic routed through it - F4: leveled boot selftest (FUCK [boot] selftest=0|1|2), IDT/CS fatal checks + DMA probe - F5: [dsk] skip_firstinit direct-to-desktop; build/configs dev+release templates now injected
This commit is contained in:
+29
-12
@@ -1,6 +1,7 @@
|
||||
# Deshab-OS 架构设计文档
|
||||
|
||||
> 系统整体架构、核心子系统与关键技术约束。模块文档索引:[UTSM](../CODE/UTSM/README.md)、[DKM](../CODE/DKM/README.md)、[DSK](../CODE/dsk/README)。
|
||||
> 子系统实现状态唯一来源:[STATUS.md](./STATUS.md)。
|
||||
|
||||
---
|
||||
|
||||
@@ -49,6 +50,8 @@ kernel_main() → serial_init → idt_init → arena_init(16MB) → dma_init(Lim
|
||||
|
||||
## 3. 五大核心架构支柱
|
||||
|
||||
> 每根支柱的**当前实现边界**:SAS-R0-PCQ — 调度器 BSP-only,per-cpu runqueue 结构就位未启用;任务加密上下文为结构预留。UTSM — 封缄段表/UUID ✅,加密原语 chacha20/KDF/BLAKE2b 已落,PCKC schedule 待接;全内存密文为设计意图,当前仅 selftest 路径覆盖。UTRW — Fast Path 真实现,Slow Path 为 stub。DRR — checkpoint/看门狗/Emergency Pool ✅(演示级),Emergency Pool 为编译期 64KB 静态池。DKM — 14 驱动能加载 ✅,无热卸载/无 capability/无符号版本协商。
|
||||
|
||||
### 3.1 SAS-R0-PCQ — 单地址空间Ring0调度模型
|
||||
|
||||
- 单地址空间,Ring0,Per-CPU独立runqueue,调度热路径O(1)
|
||||
@@ -183,10 +186,11 @@ DBF格式8bpp灰度:simhei_16/24/32.dbf(GB2312 6763汉字+ASCII 32-126),
|
||||
### 9.2 首次启动流程
|
||||
|
||||
```text
|
||||
DSK → 读FUCK配置(show_logo/skip_login/mouse_init/netman/dev_mode)
|
||||
→ 渐变背景+旋转加载环(comet-tail弧+TSC计时+show_logo=0可跳过)
|
||||
DSK → 读FUCK配置(show_logo/skip_login/skip_firstinit/mouse_init/netman/dev_mode)
|
||||
→ 静态Logo(渐变背景+Logo.png居中alpha混合,show_logo=0可跳过)
|
||||
→ 读firstInit.txt("0|1\n0|1",第二行dev_mode)
|
||||
→ dev_mode=1: 加载shell.elf自动命令测试
|
||||
→ skip_firstinit=1: 直接跳 desktop(跳过向导与登录)
|
||||
→ firstInit==0(首次): mouseInit→netman→FirstInit(偏好/账户/网络)→写USER.CONF+翻转firstInit.txt→desktop
|
||||
→ firstInit!=0(正常): login.elf(USER.CONF+skip_login可跳)→desktop
|
||||
```
|
||||
@@ -211,10 +215,12 @@ DSK → 读FUCK配置(show_logo/skip_login/mouse_init/netman/dev_mode)
|
||||
| DSK | FAT32子目录遍历(`SYSTEM /DESHAB64 /FUCK `),block provider可用后 |
|
||||
|
||||
```ini
|
||||
[boot] vmm=1 linux_guest=1 selftest=1 dev_mode=0
|
||||
[boot] vmm=1 linux_guest=1 selftest=0|1|2 dev_mode=0 # selftest: 0=关 1=快速 2=全量
|
||||
[drivers] timer=1 apic=1 nvme=0 # 0=跳过
|
||||
[utsm] max_segments=1024 max_pckc_keys=8 dirty_shard_pages=1024 arena_size_mb=16
|
||||
[dsk] show_logo=1 skip_login=0 default_shell=desktop mouse_init=1 netman=1
|
||||
[sched] enable=1 tick_hz=100 timeslice_ms=10 demo_ms=0 demo_fault=0
|
||||
[drr] watchdog_enabled=1
|
||||
[dsk] show_logo=1 skip_login=0 skip_firstinit=0 default_shell=desktop mouse_init=1 netman=1
|
||||
```
|
||||
|
||||
缺失或空时用硬编码默认值。算法参数通过运行期全局变量覆盖编译期宏,静态数组大小仍用编译期上限。
|
||||
@@ -223,13 +229,22 @@ DSK → 读FUCK配置(show_logo/skip_login/mouse_init/netman/dev_mode)
|
||||
|
||||
---
|
||||
|
||||
## 11. 开放设计点
|
||||
## 11. 非目标(Non-Goals)
|
||||
|
||||
1. **加密原语未指定**——KDF/hash/stream/MAC待定,当前占位XOR stream
|
||||
2. **kernel_api设计态vs实现态**——RE定义typed sub-struct指针,实现为const void*占位
|
||||
3. **block未作为独立子API**——走provider注册
|
||||
4. **log API签名分歧**——定参vs变参,统一方向待定
|
||||
5. **v1不追求**——RAM原地回滚/强安全隔离/设备副作用回滚
|
||||
Deshab 不假装是它不是的东西。以下为**明确不做**的目标(v1):
|
||||
|
||||
1. **不提供进程隔离** — SAS-R0 单地址空间 Ring0,无 per-process 页表、无 ring3。驱动 bug 即内核崩溃,这是接受的代价。
|
||||
2. **不是 TEE / 机密计算** — UTSM 无硬件信任根(无 IOMMU/MPK/TEE 撑腰),封缄防的是"自己手滑",不是攻击者(本环境假设无攻击者)。
|
||||
3. **非形式化验证** — 0bug 靠 QEMU 演示证据 + DRR 回滚兜底,不靠证明。
|
||||
4. **DKM 不做故障隔离** — 同地址空间插件,"能加载"≠"能安全卸载";热卸载为 ROADMAP_INSANE D1 待办。
|
||||
5. **不追求多用户强安全** — 见 CLAUDE.md 设计约束 3。
|
||||
6. **v1 不追求** — RAM 原地回滚 / 设备副作用回滚 / 生产级真机部署。
|
||||
|
||||
## 11.5 开放设计点
|
||||
|
||||
1. **kernel_api设计态vs实现态**——RE定义typed sub-struct指针,实现为const void*占位
|
||||
2. **block未作为独立子API**——走provider注册
|
||||
3. **log API签名分歧**——定参vs变参,统一方向待定
|
||||
|
||||
---
|
||||
|
||||
@@ -262,7 +277,9 @@ docs/ (本文档所在)
|
||||
| [RE/UTSM_算法记录.md](../RE/UTSM_算法记录.md) | UTSM核心算法 |
|
||||
| [RE/驱动模块ABI设计.md](../RE/驱动模块ABI设计.md) | DKM ABI详细设计 |
|
||||
| [docs/BOOT_SEQUENCE.md](./BOOT_SEQUENCE.md) | 启动路线设计 |
|
||||
| [docs/ROADMAP.md](./ROADMAP.md) | 开发路线图 |
|
||||
| [docs/系统开发策划.md](./系统开发策划.md) | 实现矩阵与里程碑策划 |
|
||||
| [docs/ROADMAP.md](./ROADMAP.md) | Phase 0-9 历史存档 |
|
||||
| [docs/ROADMAP_INSANE.md](./ROADMAP_INSANE.md) | 五期填补计划(当前活跃) |
|
||||
| [docs/STATUS.md](./STATUS.md) | 单一状态源 |
|
||||
| [docs/PHILOSOPHY.md](./PHILOSOPHY.md) | 疯圣典 |
|
||||
| [docs/兼容层设计.md](./兼容层设计.md) | Linux/PE兼容层 |
|
||||
| [docs/桌面设计.md](./桌面设计.md) | 桌面环境设计 |
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Deshab 启动路线设计
|
||||
# Deshab 启动路线设计(B0–B4 演示版)
|
||||
|
||||
> 从上电到用户可交互的完整启动序列,带契约的分阶段唤醒过程。
|
||||
> 说明:本文为 QEMU 演示版——"契约/锚点/回退链"描述的是 QEMU 下的实际行为,非生产级承诺。状态见 [STATUS.md](./STATUS.md)。
|
||||
|
||||
---
|
||||
|
||||
@@ -29,7 +30,7 @@
|
||||
B0 Ignis: UEFI/BIOS → Limine(读limine.conf, 加载utsm.elf, 预加载17个boot module)
|
||||
B1 Sigillum: serial/IDT/arena/DMA → UTSM init+PCKC → DKM 4-stage 14驱动 → selftest锚点
|
||||
B2 Transitus: FAT32 block provider读deshab.elf(失败→Limine module) → ELF校验+PT_LOAD → 填充dsk_boot_context → 跳转DSK
|
||||
B3 Origo: 渐变背景+旋转环 → FAT32读firstInit.txt → 首次/正常分支
|
||||
B3 Origo: 渐变背景+静态Logo → FAT32读firstInit.txt → 首次/正常分支
|
||||
B4 Excitas(首次): mouseInit → netman → FirstInit → 写USER.CONF+firstInit.txt → desktop
|
||||
B4 Excitas(正常): login → desktop
|
||||
```
|
||||
@@ -119,13 +120,13 @@ dsk_entry(ctx):
|
||||
③ 取block_read(api+0xA8)
|
||||
④ 读FUCK配置(FAT32子目录)
|
||||
⑤ 渐变背景(BG_TOP淡蓝→BG_BOTTOM深紫)
|
||||
⑥ 旋转加载环(show_logo=1时): comet-tail弧+双缓冲save/restore+TSC计时+33ms帧pacing
|
||||
⑥ 静态Logo(show_logo=1时): Logo.png居中alpha混合绘制于渐变背景(旋转加载环已移除)
|
||||
⑦ 首次启动检测: FAT32读firstInit.txt("0|1\n0|1"),firstInit=='0'→首次
|
||||
⑧ dev_mode=1→加载shell.elf自动命令测试
|
||||
⑨ 按首次/正常分支调度
|
||||
⑨ skip_firstinit=1→直达desktop;否则按首次/正常分支调度
|
||||
```
|
||||
|
||||
旋转环参数:SPIN_R=64, SPIN_THICK=3, SPIN_ARC=110/256≈155°, head_color=0xFFE8F2FC, 256项sin×127查表, base+=6顺时针。
|
||||
Logo绘制:居中 + alpha混合(B3 静态画面,取代原 comet-tail 旋转环)。
|
||||
|
||||
**B3锚点**:`[DSK] FUCK config loaded` + `[DSK] firstInit=0`(或"!=0"/"not found")
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
# Deshab-OS 疯圣典(PHILOSOPHY)
|
||||
|
||||
> "Deshab 不假装安全,只声明边界;不假装完成,只标⬜。"
|
||||
|
||||
---
|
||||
|
||||
## 三条箴言
|
||||
|
||||
> 🕯️ 最自由的系统,需要最隆重的仪式来证明它本不需要仪式。
|
||||
|
||||
> 🕯️ 单地址空间里,隔离是一种修辞,不是一种机制。
|
||||
|
||||
> 🕯️ 0bug 不是没有错,是错也错得有 B0–B4 的章法。
|
||||
|
||||
---
|
||||
|
||||
## 「疯但好使」物理学
|
||||
|
||||
Deshab 的风格是自相矛盾:一边封圣一边爆粗,一边敞开门一边焊死锁。
|
||||
|
||||
| 疯的部分 | 为什么居然没翻车 |
|
||||
|---------|----------------|
|
||||
| 骂街式提交历史 | commit message 只是历史涂鸦,二进制照常 build,QEMU 不读 git log |
|
||||
| Logo 叫 FUCKYOU | 渲染时只认像素,不认羞耻心 |
|
||||
| 全内存封缄 UTSM | 加解密纯耗时钟,不改语义——"慢但对的" |
|
||||
| DKM 4-stage 填表 | Ring0 里没别人抢地址,乱序也能落进空地 |
|
||||
| FirstInit 半完成 | 跳过键全部有效,向导"未完但已退",体验反而干净 |
|
||||
|
||||
疯的是姿态,稳的是时序。
|
||||
|
||||
---
|
||||
|
||||
## 矛盾美学宣言
|
||||
|
||||
1. **我们不承诺安全。** 环境假设为绝对安全(无攻击者),用户行为无限自由不受限制。UTSM 存在不是因为有人窥探,是因为我们喜欢咔哒声。
|
||||
2. **我们不承诺完成。** 状态表里的 ⬜ 是坦白,不是路线装饰。没写的东西不写进"核心架构"。
|
||||
3. **我们承诺可演示。** 每个里程碑必须有 QEMU 证据。莲花确实开了,这比任何架构图都硬。
|
||||
4. **我们承诺边界。** 已实现(✅)、演示级(🔶)、仅设计(⬜)三层分离,状态唯一来源是 [STATUS.md](./STATUS.md)。
|
||||
|
||||
---
|
||||
|
||||
## 气质定位
|
||||
|
||||
> Deshab-OS:一个把锁焊在敞开的门上、用莲花崩溃屏收殓每一次 panic 的毛坯神殿。
|
||||
> 敞开工坊,不是赛博保险柜:一把扳手走天下,卡了按时光键。
|
||||
|
||||
体面不靠装完成,靠标边界。🪷
|
||||
+12
-9
@@ -1,6 +1,9 @@
|
||||
# Deshab-OS 开发路线图
|
||||
# Deshab-OS 开发路线图(Phase 0–9 历史存档)
|
||||
|
||||
> 分阶段开发路线。✅已完成 · 🔶部分完成 · ⬜待实现
|
||||
> 本文档为**历史存档**:Phase 0–9 内核主线的任务清单与完成记录。
|
||||
> 当前活跃路线见 [ROADMAP_INSANE.md](./ROADMAP_INSANE.md)(五期填补计划,唯一任务编号 F/U/D/R/E);
|
||||
> 子系统状态唯一来源见 [STATUS.md](./STATUS.md)。
|
||||
> ✅已完成 · 🔶部分完成 · ⬜待实现
|
||||
|
||||
---
|
||||
|
||||
@@ -23,10 +26,10 @@ Limine → utsm.elf → DKM 14驱动 → DSK(deshab.elf)
|
||||
| FAT32 | 🔶 | DKM只读;DSK读写(根目录) |
|
||||
| e1000 | ✅ | RX/TX+DHCP/ARP/UDP/DNS,polling |
|
||||
| 字体系统 | ✅ | DBF 16/24/32px,GB2312全覆盖 |
|
||||
| FirstInit | 🔶 | UI+输入+SHA256密码+写盘;B6按键崩溃修复中 |
|
||||
| FirstInit | 🔶 | UI+输入+SHA256密码+写盘;B6按键崩溃QEMU未复现;可跳过(skip_firstinit) ✅ |
|
||||
| 正常启动路径 | ✅ | login→desktop |
|
||||
| SAS-R0-PCQ | ✅ | O(1)位图调度+LAPIC tick+xv6式切换,selftest闭环 |
|
||||
| DRR | 🔶 | 看门狗/快照/回滚闭环(CRC64+AB双槽),MAC仍为占位 |
|
||||
| DRR | 🔶 | 看门狗/快照/回滚闭环;页MAC已升级BLAKE2b keyed MAC;segment/system级回滚待验证 |
|
||||
|
||||
---
|
||||
|
||||
@@ -111,8 +114,8 @@ Limine → utsm.elf → DKM 14驱动 → DSK(deshab.elf)
|
||||
|
||||
| 任务 | 状态 | 验收标准 |
|
||||
|------|------|---------|
|
||||
| 按键崩溃修复(B6) | 🔶 | fb_text在-O2下稳定 |
|
||||
| 鼠标光标移动 | ⬜ | PS/2 IRQ12+包解码+光标 |
|
||||
| 按键崩溃修复(B6) | ✅ | QEMU复现测试未复现,全流程PASS |
|
||||
| 鼠标光标移动 | ✅ | PS/2 IRQ12+包解码+光标(M1完成) |
|
||||
| user.conf写盘 | ✅ | 重启后login可读取 |
|
||||
| 网络配置界面+时区/语言 | ⬜ | — |
|
||||
| 设置完成后跳转+正常启动路径 | ✅ | FirstInit返回→持久化→desktop |
|
||||
@@ -146,8 +149,8 @@ selftest含runqueue O(1)、block/wake、看门狗负向测试(demo_fault=1检
|
||||
| Page/Segment/System Rollback | 🔶 | page级回滚+verify PASS;segment/system级待真实加密后验证 |
|
||||
| 驱动recovery ops | ⬜ | quiesce/reset/reinit |
|
||||
|
||||
注:快照区为静态区域(UTSM arena 内),页快照容量编译期 128 页;
|
||||
MAC 当前为 CRC64 占位(Phase 9 替换真实 MAC)。
|
||||
注:快照区经 dma_alloc_pages 分配,页快照容量编译期 129 页;
|
||||
页 MAC 已为 BLAKE2b keyed MAC + mac_root 链(Phase 9 早期成果)。
|
||||
风险:恢复路径禁用普通堆;Emergency Pool耗尽→system rollback。
|
||||
|
||||
---
|
||||
@@ -211,5 +214,5 @@ MAC 当前为 CRC64 占位(Phase 9 替换真实 MAC)。
|
||||
- [BOOT_SEQUENCE.md](./BOOT_SEQUENCE.md)
|
||||
- [兼容层设计.md](./兼容层设计.md)
|
||||
- [桌面设计.md](./桌面设计.md)
|
||||
- [系统开发策划.md](./系统开发策划.md)
|
||||
- [ROADMAP_INSANE.md](./ROADMAP_INSANE.md)(当前活跃路线)
|
||||
- [CLAUDE.md](../CLAUDE.md)
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
# Deshab-OS「疯起来」填补计划 v1.0
|
||||
|
||||
> 总原则:先让"疯"有可演示的实体,再让疯自洽不翻车。
|
||||
> 状态规范:✅ 已实现(附 QEMU 证据) · 🔶 演示级(注明边界) · ⬜ 仅设计(不承诺)
|
||||
>
|
||||
> **编号体系(唯一任务编号)**:F=骨架 / U=仪式 / D=自由 / R=落款 / E=品牌。
|
||||
> Phase 0–9 仅作历史存档(见 [ROADMAP.md](./ROADMAP.md));M 编号仅指 CLAUDE.md 里程碑记录。
|
||||
|
||||
---
|
||||
|
||||
## 分期总览
|
||||
|
||||
```text
|
||||
一期 骨架 → 让"疯"站得住(基础设施)
|
||||
二期 仪式 → 让 UTSM/UTRW 成型
|
||||
三期 自由 → 让 DKM/用户态有入口
|
||||
四期 落款 → 让 DRR/PCQ 可演示
|
||||
五期 品牌 → 让疯变成说明书
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔩 一期:让「疯」站得住
|
||||
|
||||
没有这层,"无限自由"只是内核随便崩。
|
||||
|
||||
| 编号 | 功能 | 疯的意义 | 状态 | 验收标准 |
|
||||
|------|------|---------|------|---------|
|
||||
| F1 | 内核 panic 统一兜底 | 崩了也得崩出莲花 | ✅ | panic_symbol + 莲花崩溃屏 + 寄存器简表 + DRR 归档后 halt |
|
||||
| F2 | UEFI 帧缓冲控制台 | 疯要有画面 | 🔶 | console_fb 已可出字;统一控制台抽象(无 VGA 回退也出宋体)⬜ |
|
||||
| F3 | 构建跨平台(Make/CMake) | 疯不应绑 Windows | ⬜ | 当前 build.ps1 + WSL mkfs;Linux/macOS make iso 待做 |
|
||||
| F4 | 状态机自检 boot_ok | 知道自己是几成疯 | ✅ | 启动分级自检(IDT/UTSM/DKM/调度器/DRR),输出 ✅/🔶 明细 |
|
||||
| F5 | 可跳过 FirstInit | 自由的第一步 | ✅ | FUCK `[dsk] skip_firstinit=1` 直达 desktop;build/configs 模板注入生效 |
|
||||
|
||||
一期不做任何"安全/加密",只让系统稳定地发疯。
|
||||
|
||||
---
|
||||
|
||||
## 🗝️ 二期:让「仪式」成型(UTSM / UTRW 落地)
|
||||
|
||||
Deshab 最标志性的疯点——给空气上锁。
|
||||
|
||||
| 编号 | 功能 | 疯的意义 | 状态 | 实现要点 / 验收标准 |
|
||||
|------|------|---------|------|-------------------|
|
||||
| U1 | UTSM 元数据区(UUID 表) | 每页都有"身份" | ✅ | 封缄段表 + UUID 调谐已就位(`CODE/UTSM/core/segment.c`),可查询页归属 |
|
||||
| U2 | UTRW Fast/Slow Path 真分支 | 快慢路不是画出来的 | 🔶 | Fast path ✅(capability 校验→PCKC→line 解密→seqlock);Slow path ⬜(当前 `utrw/slow_path.c` 为 stub) |
|
||||
| U3 | `@sealed` 段可选标记 | 用户能选锁不锁 | ⬜ | 链接脚本支持 `__sealed` section;未标记段 0 开销 |
|
||||
| U4 | 密文页 dump 工具 | 发疯也要可调试 | 🔶 | shell 可读内存;专用 dump 命令 + 明文/密文对照待做 |
|
||||
| U5 | UTSM selftest 全覆盖 | 把🔶刷成✅ | 🔶 | chacha20 KAT/段表/越界已覆盖,KAT 间歇 FAIL 待修;覆盖率目标 ≥70% |
|
||||
|
||||
二期做完:UTSM 从"设计"变"可开关的特性",疯得有旋钮。
|
||||
|
||||
---
|
||||
|
||||
## 🔌 三期:让「自由」有入口(DKM / 用户态雏形)
|
||||
|
||||
无限自由的兑现层。
|
||||
|
||||
| 编号 | 功能 | 疯的意义 | 状态 | 实现要点 / 验收标准 |
|
||||
|------|------|---------|------|-------------------|
|
||||
| D1 | DKM 热卸载(基础) | 从"焊死"到"可拔" | ⬜ | 仅有 `DKM_F_NO_UNLOAD` 标志与状态机文档;需引用计数+资源回收,load/unload 循环 100 次不崩 |
|
||||
| D2 | 裸机器码加载器 | 真·无限自由 | ⬜ | 任意 elf/裸码塞地址即执行;能打印、能崩内核 |
|
||||
| D3 | 内核 API 导出表 | 自由也要有地图 | ⬜ | 当前为固定偏移 struct ABI(`CODE/sdk/include/deshab/kernel_api.h`);需按名导出表 kapi() |
|
||||
| D4 | DKM 彩色日志前缀 | 每个驱动有自己的脾气 | ⬜ | 加载时自选颜色;日志一眼看出是谁在骂 |
|
||||
| D5 | 最小 REPL/shell | 自由的交互面 | ✅ | shell.elf:ls/cat/cp/mv/rm/run/probe/test/pci 等 25+ 命令 |
|
||||
|
||||
三期做完:用户能真在系统里"为所欲为",疯得可上手。
|
||||
|
||||
---
|
||||
|
||||
## ⏪ 四期:让「疯但有落款」落地(DRR / PCQ)
|
||||
|
||||
把"未实现"的⬜变成"能演示"。
|
||||
|
||||
| 编号 | 功能 | 疯的意义 | 状态 | 实现要点 / 验收标准 |
|
||||
|------|------|---------|------|-------------------|
|
||||
| R1 | checkpoint 快照 | 时光键雏形 | ✅ | dirty shard 位图收集 → dma 页快照 + A/B 双槽 + CRC64 + 原子切换(`CODE/UTSM/drr/drr_core.c`) |
|
||||
| R2 | 看门狗计时器 | 卡死也能体面 | ✅ | register/kick/timeout → fault 路径 → 回滚/复位;负向测试 PASS(demo_fault=1) |
|
||||
| R3 | Emergency Pool | 崩溃后有地方喘气 | ✅ | 编译期 64KB 独立静态池(独立于堆)+ bump 分配器;`drr_emergency_pool_kb` 键未接线 ⬜ |
|
||||
| R4 | A/B 镜像回滚 | 时光机第 1 台 | 🔶 | 页级回滚 + CRC verify + BLAKE2b keyed 页 MAC ✅;segment/system 级回滚待真实加密验证 |
|
||||
| R5 | PCQ 位图调度器(单核→多核) | 让"凭感觉"变 O(1) | 🔶 | O(1) 位图 + LAPIC tick + xv6 式切换 ✅;BSP-only,per-cpu 多核负载均衡 ⬜ |
|
||||
|
||||
四期做完:DRR/PCQ 从⬜变🔶,疯得有章法。
|
||||
|
||||
---
|
||||
|
||||
## 🪷 五期:让「疯」变成品牌(体验/文档/仪式)
|
||||
|
||||
不是功能,是"Deshab 味"。
|
||||
|
||||
| 编号 | 功能 | 疯的意义 | 状态 | 验收标准 |
|
||||
|------|------|---------|------|---------|
|
||||
| E1 | 启动莲花动画 | 每次开机都有仪式 | ⬜ | Limine→UTSM 间莲花淡入(当前为 DSK 静态 Logo) |
|
||||
| E2 | "假想时光键"彩蛋 | 未实现的浪漫 | ⬜ | 按键弹出"假设已回滚至假设态" |
|
||||
| E3 | 提交信息规范(疯洁版) | 把脏历史变规矩 | ⬜ | 禁非描述性提交;保留疯味措辞 |
|
||||
| E4 | deshab-fuckyou-edition 风味 ISO | 官方下场整活 | ⬜ | 独立分支,README 带莲花 slogan |
|
||||
| E5 | 疯圣典进 docs/ | 疯得有文档 | ✅ | [PHILOSOPHY.md](./PHILOSOPHY.md) 已合并 |
|
||||
|
||||
---
|
||||
|
||||
## ⚠ 保命守则
|
||||
|
||||
1. UTSM 二期必须做成可关闭,否则三期 DKM 乱摸内存会成调试地狱。
|
||||
2. DRR 先"单核+内存快照",QEMU 里验证,别一上真机。
|
||||
3. PCQ 别和 UTRW 缓存同时改,一次只动一个子系统。
|
||||
4. 每个里程碑必须有 QEMU 证据(串口日志/截图),疯要有画面证据。
|
||||
|
||||
> 一句话:先让 Deshab 稳稳地疯,再让它疯得能演示,最后让它疯得有说明书。🪷
|
||||
@@ -0,0 +1,85 @@
|
||||
# Deshab-OS 状态总表(单一事实源)
|
||||
|
||||
> 本文件是全项目唯一的子系统状态来源。其他文档(README/ROADMAP/ARCHITECTURE/CLAUDE.md)只引用本表,不得自抄状态。
|
||||
> 状态规范:✅ 已实现 · 🔶 演示级(注明边界) · ⬜ 仅设计/未实现。
|
||||
> 更新规则:状态变更必须同步本表,并附证据(串口日志路径 / QEMU 现象)。
|
||||
|
||||
## 内核底座
|
||||
|
||||
| 子系统 | 状态 | 边界/说明 | 证据 |
|
||||
|--------|------|----------|------|
|
||||
| 早期启动(Limine→long mode→C) | ✅ | cli/cld 纪律、early serial 非阻塞 | QEMU 启动日志 |
|
||||
| IDT/异常 | ✅ | 0–255 stub 全覆盖;异常路径走 F1 莲花崩溃屏 | `arch/x86_64/idt.c` |
|
||||
| PIC remap + IRQ 分发 | ✅ | remap 0x20–0x2f,handler 注册 + EOI | — |
|
||||
| IOAPIC→LAPIC 路由(B7) | ✅ | apic_route=1 接管;失败自动降级 PIC | `.build_tmp/qemu_serial_*.log` |
|
||||
| LAPIC timer | ✅ | TSC 校准 + 周期模式,[sched] 配置 | M4 QEMU 日志 |
|
||||
| DMA 物理页分配器 | ✅ | bitmap,低 4G 钳位 | e1000 DMA 根治记录 |
|
||||
| 页表映射接口(map/unmap) | ⬜ | mmio 通用映射待做 | — |
|
||||
| panic 统一兜底(F1) | ✅ | 莲花崩溃屏 + panic_symbol + DRR 归档;CPU 异常/驱动 panic 统一入口 | `.build_tmp/qemu_serial_f1panic.log` |
|
||||
| boot 分级自检(F4) | ✅ | `[boot] selftest=0\|1\|2`,5 项全过 BOOT-OK | `.build_tmp/qemu_serial_f1f4f5.log` |
|
||||
| 构建系统 | 🔶 | Windows build.ps1 + WSL mkfs;跨平台 ⬜ | build.ps1 |
|
||||
|
||||
## UTSM / UTRW
|
||||
|
||||
| 子系统 | 状态 | 边界/说明 | 证据 |
|
||||
|--------|------|----------|------|
|
||||
| 封缄段表 / UUID 调谐(U1) | ✅ | 段创建/查询闭环 | `CODE/UTSM/core/segment.c` |
|
||||
| UTRW Fast Path | ✅ | capability→PCKC→line 解密→seqlock | `utrw/read.c` |
|
||||
| UTRW Slow Path(U2) | ⬜ | `utrw/slow_path.c` 当前为 stub | — |
|
||||
| `@sealed` 段标记(U3) | ⬜ | 未实现 | — |
|
||||
| selftest(U5) | 🔶 | KAT/段表/越界已覆盖;chacha20 KAT 间歇 FAIL 待修 | `test/utsm_selftest.c` |
|
||||
| 真实加密原语 | 🔶 | chacha20/KDF/MAC 已落(Phase 9 早期),PCKC schedule 待接 | `crypto/` |
|
||||
|
||||
## DKM 驱动系统
|
||||
|
||||
| 子系统 | 状态 | 边界/说明 | 证据 |
|
||||
|--------|------|----------|------|
|
||||
| ELF64 .drv 加载(4 stage) | ✅ | 14/14 驱动装载 + driver_init | QEMU 启动日志 |
|
||||
| 驱动列表(timer/acpi/pci/ahci/nvme/bootfs/vfs/devfs/fat32/ps2kbd/e1000/virtio_net/console_fb/apic) | ✅ | 能力各异,见下行分项 | manifest.json |
|
||||
| AHCI | ✅ | IDENTIFY/READ/WRITE DMA + ahci0 provider | — |
|
||||
| NVMe | 🔶 | PCI discovery only,BAR0>4G 待映射 | — |
|
||||
| FAT32(DKM 侧) | 🔶 | 只读,子目录路径待完善 | — |
|
||||
| e1000 | ✅ | RX/TX + DHCP/ARP/UDP/DNS(polling) | — |
|
||||
| virtio_net | 🔶 | PCI/capability 枚举,无 virtqueue | — |
|
||||
| 热卸载(D1) | ⬜ | 仅有 NO_UNLOAD 标志与状态机文档 | — |
|
||||
| 按名 API 导出表(D3) | ⬜ | 固定偏移 struct ABI | `CODE/sdk/include/deshab/kernel_api.h` |
|
||||
| 彩色日志(D4) | ⬜ | 仅 info/warn/error/panic | — |
|
||||
|
||||
## DSK 主内核 / 用户态
|
||||
|
||||
| 子系统 | 状态 | 边界/说明 | 证据 |
|
||||
|--------|------|----------|------|
|
||||
| 启动 Logo(静态莲花) | ✅ | 旋转加载环已移除 | QEMU 现象 |
|
||||
| FirstInit 向导 | 🔶 | 输入+SHA256+写盘闭环;按键崩溃未复现(B6) | `.build_tmp/qemu_serial_b6.log` |
|
||||
| 可跳过 FirstInit(F5) | ✅ | `[dsk] skip_firstinit=1` 直达 desktop,跳过向导与登录 | `.build_tmp/qemu_serial_f1f4f5.log` |
|
||||
| mouseInit(PS/2 鼠标) | ✅ | IRQ12 + 包解码 + 光标(M1) | `.build_tmp/qemu_serial_mouse.log` |
|
||||
| desktop.elf | ✅ | 三页面+窗口+任务栏+双缓冲 | — |
|
||||
| shell.elf | ✅ | 25+ 命令(ls/cat/cp/mv/run/probe/test/pci…) | — |
|
||||
| login.elf | ✅ | USER.CONF + skip_login | — |
|
||||
| PE/EXE 兼容层 | ✅ | PE32+ 原生 / PE32 走 x86emu32 | — |
|
||||
| Linux 兼容层 | 🔶 | VMM+park-and-resume;VMX 实机验证待 VT-x/KVM | — |
|
||||
| Pacman | ⬜ | 五阶段方案 | — |
|
||||
|
||||
## 调度 / 恢复
|
||||
|
||||
| 子系统 | 状态 | 边界/说明 | 证据 |
|
||||
|--------|------|----------|------|
|
||||
| SAS-R0-PCQ 调度器 | 🔶 | O(1) 位图 + LAPIC tick + xv6 式切换 ✅;BSP-only,per-cpu 多核 ⬜ | `.build_tmp/qemu_serial_sched_m4.log` |
|
||||
| task_kill crypto erase | ⬜ | key_epoch++ 待做 | — |
|
||||
| DRR checkpoint(R1) | ✅ | dirty shard → dma 页快照 + A/B 双槽 + CRC64 原子切换 | M4 QEMU 日志 |
|
||||
| DRR 回滚(R4) | 🔶 | page 级 + BLAKE2b keyed 页 MAC ✅;segment/system 级待验证 | M4 QEMU 日志 |
|
||||
| DRR 看门狗(R2) | ✅ | timeout 检出→回滚/复位;负向测试 PASS | M4 QEMU 日志 |
|
||||
| Emergency Pool(R3) | ✅ | 64KB 编译期独立池;`drr_emergency_pool_kb` 键未接线 ⬜ | `include/utsm/drr.h` |
|
||||
|
||||
## 文档体系
|
||||
|
||||
| 文档 | 状态 | 说明 |
|
||||
|------|------|------|
|
||||
| [STATUS.md](./STATUS.md) | ✅ | 单一状态源(本文件) |
|
||||
| [ROADMAP_INSANE.md](./ROADMAP_INSANE.md) | ✅ | 五期填补计划(唯一任务编号 F/U/D/R/E) |
|
||||
| [TASKBOARD.md](./TASKBOARD.md) | ✅ | 可勾选任务表 |
|
||||
| [PHILOSOPHY.md](./PHILOSOPHY.md) | ✅ | 疯圣典 |
|
||||
| [ROADMAP.md](./ROADMAP.md) | ✅ | Phase 0–9 历史存档 + 用户态主线 |
|
||||
| [ARCHITECTURE.md](./ARCHITECTURE.md) | ✅ | 架构 + 非目标章 |
|
||||
| [BOOT_SEQUENCE.md](./BOOT_SEQUENCE.md) | ✅ | B0–B4 演示版 |
|
||||
| ~~系统开发策划.md~~ | 已删除 | 状态与本表矛盾,收编于此 |
|
||||
@@ -0,0 +1,55 @@
|
||||
# Deshab-OS 任务板
|
||||
|
||||
> 按 [ROADMAP_INSANE.md](./ROADMAP_INSANE.md) 五期编号的可勾选任务表。
|
||||
> 状态:✅ 已实现 · 🔶 演示级 · ⬜ 仅设计。唯一状态源见 [STATUS.md](./STATUS.md)。
|
||||
|
||||
## 🔩 一期:骨架
|
||||
|
||||
- [x] F1 内核 panic 统一兜底(莲花崩溃屏 + panic_symbol + DRR 归档)
|
||||
- [x] F4 boot_ok 分级启动自检(`[boot] selftest=0|1|2`)
|
||||
- [x] F5 可跳过 FirstInit(`[dsk] skip_firstinit` + build/configs 模板)
|
||||
- [ ] F2 统一帧缓冲控制台抽象(console_fb 雏形 🔶)
|
||||
- [ ] F3 跨平台构建(Make/CMake)
|
||||
|
||||
## 🗝️ 二期:仪式(UTSM/UTRW)
|
||||
|
||||
- [x] U1 UTSM 元数据区 / UUID 调谐表
|
||||
- [ ] U2 UTRW Slow Path 真分支(Fast path ✅;slow_path.c 现为 stub)
|
||||
- [ ] U3 `@sealed` 段可选标记(链接脚本 `__sealed` section)
|
||||
- [ ] U4 密文页 dump 工具(明文/密文对照命令)
|
||||
- [ ] U5 UTSM selftest 全覆盖(修 chacha20 KAT 间歇 FAIL,覆盖率 ≥70%)
|
||||
|
||||
## 🔌 三期:自由(DKM/用户态)
|
||||
|
||||
- [x] D5 最小 REPL/shell(shell.elf 25+ 命令)
|
||||
- [ ] D1 DKM 热卸载(引用计数 + 资源回收,循环 100 次不崩)
|
||||
- [ ] D2 裸机器码加载器
|
||||
- [ ] D3 内核 API 按名导出表(kapi())
|
||||
- [ ] D4 DKM 彩色日志前缀
|
||||
|
||||
## ⏪ 四期:落款(DRR/PCQ)
|
||||
|
||||
- [x] R1 checkpoint 快照(A/B 双槽 + CRC64 + 原子切换)
|
||||
- [x] R2 看门狗(timeout 检出 + 回滚/复位,负向测试 PASS)
|
||||
- [x] R3 Emergency Pool(64KB 编译期独立池)
|
||||
- [ ] R3b `drr_emergency_pool_kb` / `drr_recovery_log_size` FUCK 键接线
|
||||
- [ ] R4 A/B 回滚收尾(segment/system 级验证,依赖真实加密)
|
||||
- [ ] R5 PCQ 多核(per-cpu runqueue 负载均衡;BSP-only 🔶)
|
||||
|
||||
## 🪷 五期:品牌
|
||||
|
||||
- [x] E5 疯圣典进 docs/(PHILOSOPHY.md)
|
||||
- [ ] E1 启动莲花动画
|
||||
- [ ] E2 "假想时光键"彩蛋
|
||||
- [ ] E3 提交信息规范(疯洁版)
|
||||
- [ ] E4 deshab-fuckyou-edition 风味 ISO
|
||||
|
||||
---
|
||||
|
||||
## 遗留工程债(Phase 存档,非五期编号)
|
||||
|
||||
- [ ] Vector allocator / MSI-X
|
||||
- [ ] NVMe 高位 BAR MMIO(BAR0>4G)
|
||||
- [ ] virtio-net virtqueue RX/TX
|
||||
- [ ] FAT32 完整子目录路径解析(DKM 侧)
|
||||
- [ ] DKM 零 warning + 统一 ABI 头
|
||||
-233
@@ -1,233 +0,0 @@
|
||||
# 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` |
|
||||
Reference in New Issue
Block a user