AskaEth
|
84c7446aa6
|
fix(boot): M69 普通重启/OTA 重启不再改写持久启动默认,切 Hiby 走一次性指示
用户定案(2026-11-12):/data/meow_boot_default 是「设置里的默认系统」,
只有显式设默认才许写;普通重启与 OTA 重启都不碰它,重启后选单按配置默认
(含 5s 倒计时)。「切换到 HibyOS」是这一次去 Hiby,用一次性指示
/data/meow_boot_once(bootmenu 开机读一次即删),不改持久默认。
meow_svc_power.c
- 新增 boot_default_intent()/apply_boot_default_intent():唯一写入点,
CLI 与 IPC 共用一张意图表(SET_DEFAULT_* -> 持久;BACK_HIBY -> 一次性;
REBOOT/UPGRADE/SHUTDOWN -> 两个都不写)。
- POWER_REBOOT 与 CLI `reboot` 删掉 write_boot_default(0)(病根)。
- POWER_BACK_HIBY 与 CLI `reboot --hiby` 改走同一条一次性指示路径。
- 写失败照常重启,只把消息说清楚(不静默假装成功)。
meow_bootmenu.c
- 新增 consume_boot_once():严格解析 0/1、读到即 unlink;删不掉时退一步
清空内容并记日志,本次照用,绝不让开机失败。
- load_config() 优先级写明并落地:一次性指示 > 持久默认 > meow.conf > 编译默认。
- DEF_BOOT_DEFAULT 1 -> 0(MeowOS):与设置页 boot.default 默认值一致,
避免「没设过默认/刷完固件首次开机」被丢进 Hiby。
测试(宿主,路径重定向到临时目录,不碰 /data)
- svc_power_bootdefault_test.c:意图表 + 落盘副作用 + 反向控制(改前会写)。
- test_bm_bootdefault.c:一次性指示优先/读一次即删/删后回落/非法内容/删不掉仍可开机。
未提交二进制、未改 scripts/build/fw_content.conf(钉值仍对应现有二进制,
下一轮重编再把 md5 回写)。
|
2026-11-12 10:18:09 +08:00 |
|