4.7.15. hrut_switch_reason
hrut_switch_reason 是为 A/B 双分区系统设计的启动故障诊断工具,可通过解析 misc 分区的存储数据,显示系统异常切换的根本原因。
4.7.15.1. 语法说明
以下是执行 hrut_resetreason 的命令格式:
hrut_switch_reason [misc_path] <--current|--all>
4.7.15.2. 参数选项说明
misc_path:可选参数,指定 misc 分区或文件路径(默认为 /dev/block/platform/by-name/misc)。
–current:显示最后一次异常切换的原因。
–all:显示所有异常切换的原因。
4.7.15.3. 各项命令选项及其功能说明
显示最后一次异常切换的原因
命令:
root@buildroot:~# hrut_switch_reason --current
功能:
从指定的 misc 文件中提取最后一次异常切换的原因,并输出打印。
打印输出:
misc broken
结果分析:
misc broken:表示最后一次异常切换的原因是 misc 分区损坏。
显示所有异常切换的原因
命令:
root@buildroot:~# hrut_switch_reason --all
功能:
从指定的 misc 文件中提取所有异常切换的原因,并按从最新到最旧的顺序输出打印。
打印输出:
All Reasons (From the latest to the oldest):
1: misc broken
2: unused
3: unused
4: unused
5: unused
6: unused
7: unused
8: unused
9: unused
10: unused
结果分析:
misc broken:表示 misc 分区损坏。
unused:表示未使用的条目。
各异常切换原因
以下是一些可能导致异常切换的原因及其具体触发场景:
misc broken( misc 分区损坏)
触发原因:
分区表错误: GPT 分区表中 misc 分区信息损坏
异常断电:在更新 misc 信息时断电导致数据不完整
存储介质故障: EMMC/NAND FLASH 坏块导致数据损坏
boot corrupted(启动镜像损坏)
触发原因:
OTA 更新失败:下载的 boot.img 不完整或验证失败
dm-verity corrupted( dm-verity 验证失败)
触发原因:
系统文件篡改:/system 分区被非授权修改
哈希树损坏: dm-verity 的哈希树数据块损坏
uboot corrupted( U-Boot 损坏)
触发原因:
QSPI Flash 故障: U-Boot 存储介质损坏
刷机操作错误: fastboot flash uboot 时断电或失败
miniboot corrupted( MiniBoot 损坏)
触发原因:
安全启动链断裂:上一级 Bootloader 验证失败