- CODE/dsk/ext4.c: minimal full ext4 read/write (GPT probe, feature gate, extent depth 0/1 rw, block/inode alloc-free, dir insert, write-verify); boot selftest PASS on p2. Unsupported features panic (FS-E2x), zero fallback. - DSK fat32 write: on-demand FAT entry RMW + chunked free-cluster scan (fixes "no free clusters" on 5.3G ESP); rec_len shrink offset (+4) and chunk alignment fixes. USER.CONF write-verify ok, firstInit flip ok. - First-boot: wizard -> persist -> forced login (FS-E06 if skipped/failed) -> desktop. login.elf loaded via system/user/use fallback. - FirstInit network page: Connect now panics NET-E01 (no wlan stack); Save (config only) is the only path forward. - FirstInit/DSK fatal: ohMyLogo lotus fatal screen (NET-E01 / FS-E series). - Boot screen: Logo.png image removed, "DESHAB P01" text centered only; dcp/xj logos regenerated from TEXTURES/. - run_qemu.bat: main GPT image on SATA ide.0 (AHCI provider must see ext4).
# 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 正常启动