Files
Deshab-OS/docs/ROADMAP_INSANE.md
LinehuandCursor 8554a82677 feat(panic): FUCK [panic] mode=strict|fallback + realtest image variant
- UTSM panic_full returns in fallback mode (logs [PANIC:FALLBACK] + code + hit
  count); panic_halt keeps always-halt sites (CPU exception, VMM-E11 LA57,
  VMM-E15 DSK jump, UTSM-E42 test hook). Call sites given safe continuations.
- Mode passed to DSK/FirstInit/login/desktop via DSK_BOOT_FLAG_PANIC_FALLBACK;
  DKM kernel_api.panic / kern.log.panic return to driver; ext4 fatal aborts the
  op via setjmp/longjmp and DSK falls back to FAT32 ESP.
- build.ps1/Makefile: dev=strict, release=fallback, new realtest (release
  options + strict); default -Variant all; serialized iso packing under -j.
- Fix '*/' inside comments (dkm.h, kernel_api.h, bus.c) that broke the build.
- Includes pending work: dkm_bus service bus, mt7920/wlan drivers, desktop
  files/startmenu/prank, pe-tools, diskinfo, docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 23:57:19 +08:00

111 lines
7.2 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-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 帧缓冲控制台 | 疯要有画面 | 🔶 | fbcon.h 抽象已落(panic 路径使用);统一控制台后端 ⬜ |
| F3 | 构建跨平台(Make/CMake) | 疯不应绑 Windows | 🔶 | 根 Makefile:Linux `make dev/release/realtest` 通过(编译+注入+pack);macOS 打包需 mkfs.ext4 替代 |
| 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 ✅;Slow path ✅(EPOCH/KEY_MISS 恢复,MAC_FAILED/POISONED 交 DRR,selftest PASS) |
| U3 | `@sealed` 段可选标记 | 用户能选锁不锁 | ✅ | `UTSM_SEG_F_UNSEALED` 明文直存(0 加解密开销)+ linker.ld `.sealed` section(`__sealed_start/end`);selftest PASS |
| U4 | 密文页 dump 工具 | 发疯也要可调试 | ✅ | `utrw_debug_dump_page`:串口 64B 密文/明文 hex 对照,selftest 内置演示(QEMU PASS) |
| U5 | UTSM selftest 全覆盖 | 把🔶刷成✅ | ✅ | chacha20 KAT = RFC 8439 §2.4.2 官方向量(三方对拍);"间歇 FAIL" 确认为幽灵缺陷(从未合并进树);KAT+MAC 确定性+段表+越界+调度+DRR 全量稳定 PASS |
**二期完成:UTSM 从"设计"变成"可开关的特性",疯得有旋钮。**
---
## 🔌 三期:让「自由」有入口(DKM / 用户态雏形)
无限自由的兑现层。
| 编号 | 功能 | 疯的意义 | 状态 | 实现要点 / 验收标准 |
|------|------|---------|------|-------------------|
| D1 | DKM 热卸载(基础) | 从"焊死"到"可拔" | ⬜ | 仅有 `DKM_F_NO_UNLOAD` 标志与状态机文档;需引用计数+资源回收,load/unload 循环 100 次不崩 |
| D2 | 裸机器码加载器 | 真·无限自由 | ⬜ | 任意 elf/裸码塞地址即执行;能打印、能崩内核 |
| D3 | 内核 API 导出表 → **服务总线** | 自由也要有地图 | 🔶 | kapi 按名导出表 ✅(14 条,只读);升级为**双向服务总线 dkm_bus**(kern.\*/srv.\* 注册-消费,BUS-E 系列)进行中——见 [万物互联与服务总线设计](./RE/万物互联与服务总线设计.md) |
| D4 | DKM 彩色日志前缀 | 每个驱动有自己的脾气 | ✅ | 驱动名 FNV hash → 8 色 ANSI(确定性可复现);init 期着色,仅串口;FUCK `color_log` 开关 |
| D5 | 最小 REPL/shell | 自由的交互面 | ✅ | shell.elf:ls/cat/cp/mv/rm/run/probe/test/pci 等 25+ 命令 |
| D6 | **万物互联:应用模块 DKM 化** | 没有用户态,程序即内核 | 🔶 | 向导/登录/桌面/shell/netman/cmd 全部从 DSK 加载的 PIE ELF 变为 stage4 .drv;dsk_boot_context reserved[] 硬耦合逐槽消灭,改为 srv.* 总线服务;设计定稿 [RE/万物互联与服务总线设计.md](./RE/万物互联与服务总线设计.md),P0-P4 落地中 |
| D7 | **万物互联:DSK 退役 + 常驻调度** | 没有主内核,万般皆平等 | ⬜ | deshab.elf/dsk_loader.c/dsk_boot_context 删除,会话排序变普通 session.drv;PCQ 调度器常驻(bootstrap park 成 idle)、desktop 任务化、IRQ1/12 真 IRQ 输入;P5-P6 |
三期做完:用户能真在系统里"为所欲为",疯得可上手。**D6/D7 做完:连"用户"这个概念都消失——万物皆内核,互联皆总线。**
---
## ⏪ 四期:让「疯但有落款」落地(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`/`drr_recovery_log_size` FUCK 接线 ✅(运行期钳位) |
| 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 稳稳地疯,再让它疯得能演示,最后让它疯得有说明书。🪷