Files
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
..
2026-07-31 13:53:49 +08:00

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.
# firstInit 首次启动引导



`CODE/firstInit` 是 Deshab 首次使用时的用户设置向导,只负责引导用户设置计算机名、用户名、密码等用户级配置。硬件/系统组件初始化(例如鼠标初始化)由 DSK 直接调度对应初始化程序,不由 FirstInit 接管。编译目标:



```text

CODE/firstInit -> SYSTEM/system/user/use/FirstInit.elf

```



## 触发条件



DSK 主内核启动后,从 FAT32 块设备加载 `SYSTEM/system/user/use/firstInit.txt`:



- 若 `firstInit == 0`:系统判定为**首次启动**,将值改为 `1`,加载 `FirstInit.elf` 执行用户引导

- 若 `firstInit != 0`(或文件不存在):跳过引导,进入正常启动



## 执行流程



```text

1. 接收 DSK 传入的 dsk_boot_context

2. 淡出加载环动画(~1秒渐变)

3. 屏幕中央显示:"欢迎使用 Deshab"

4. 等待 5 秒

5. 渐隐切换为:"接下来让我们来引导你设置你的系统"

6. 引导用户设置:网络、用户名、密码等(待实现)

```



## 产物路径



```text

SYSTEM/system/user/use/FirstInit.elf  — 引导程序 ELF

SYSTEM/system/user/use/firstInit.txt  — 首次标志文件(内容为 '0' 或 '1')

```



## 构建



```bash

cd CODE/firstInit

make -f MAKEFILE CC=clang LD=ld.lld

```



## 文件结构



```text

CODE/firstInit/

  main.c      — 引导程序源码

  linker.ld   — 链接脚本

  MAKEFILE    — 构建规则

  README      — 本文件

```



## 后续规划



1. 键盘输入响应

2. 网络配置界面(IP/DHCP/网关)

3. 用户名密码设置

4. 时区/语言选择

5. 完成后写入配置并跳转 DSK 正常启动