问题描述
客户现场个别机器,非全部机器出现:BMC执行升级操作后,应用层报告升级成功(Progress=100%, State=Completed),但BMC重启后新版本未能生效,系统自动回滚到升级前的旧版本。该现象在连续三次升级尝试中反复出现。请问该如何恢复确保新版本 rootfs 镜像大小与分区表定义一致,或更新分区表以适配更大的 rootfs 镜像?
升级路径:25.12.01.02 → 25.12.01.09
最终结果:始终回滚到 25.12.01.02
环境信息
- 软件版本:2512 LTS SP1
事件时间线
实际结果
Flash 存储区域 rootfs 镜像尺寸不匹配(size mismatch)
M3 底层固件升级的关键错误链:
-
[NVOPS] size:0x17847000 rd size:0x17859000 offset:0x0
→ 预期 rootfs 大小 = 0x17847000 (约 377MB)
→ 实际读取大小 = 0x17859000 (约 377MB+72KB)
→ 尺寸偏差 = 0x12000 (72KB) -
[SA] nv 1 code failed
→ NVRAM/SPI NAND 读取校验失败 -
[FWUPD] read temp region rootfs error
-
[FWUPD] verify tmp region rootfs error
-
[FWUPD] rootfs tmp verify fail, ret:-22 (-EINVAL)
-
[FWUPD] fw_upgrade_rootfs_process error, ret:-22
每次应用层都报告"升级成功",但 M3 底层始终因为 rootfs 镜像尺寸校验失败而无法完成固件同步。
分析结论
BMC升级后回滚的根本原因是 M3 固件层在将 tmp 区 rootfs 同步到 active/gold 区时,检测到 rootfs 镜像尺寸不匹配(size=0x17847000 vs rd size=0x17859000),导致 rootfs 校验失败(ret:-22),active 区域 rootfs 未被正确更新。重启后双分区均无法加载 rootfs,触发回滚机制,系统从旧的可用固件恢复启动。


