问题描述
社区版本升级社区版本后,web页面提示升级成功,实际运行的还是当前的版本,且日志中报IO error
环境信息
-
操作系统:[ Ubuntu 24.04]
-
软件版本:[OpenUBMC2509]
-
硬件配置:[Hi1711 BMC模组 + KP920模组]
期望结果
正常升级
实际结果
升级失败,日志中提示 IO error(eMMC 出问题了?)

社区版本升级社区版本后,web页面提示升级成功,实际运行的还是当前的版本,且日志中报IO error
操作系统:[ Ubuntu 24.04]
软件版本:[OpenUBMC2509]
硬件配置:[Hi1711 BMC模组 + KP920模组]
正常升级
升级失败,日志中提示 IO error(eMMC 出问题了?)

这是BMC上的eMMC出现问题了吗?
答案内容由AI生成,仅供参考:
根据您提供的信息,在 openUBMC 25.09 社区版本固件升级过程中,Web 界面提示“升级成功”,但系统并未真正完成升级,且日志中频繁出现 I/O error,指向 eMMC 存储设备(mmcblk0)存在问题。
以下是对该问题的全面分析与建议。
从提供的内核日志中,可以明确识别出底层存储 I/O 故障:
Jan 6 00:36:29 localhost kernel: blkd_open request: I/O error, dev mmcblk0gp2, sector 0 op 0x1:(WRITE) ...
Jan 6 00:36:29 localhost kernel: blkd_close request: I/O error, dev cicblklk0, logical block 0, lost sync page write
Jan 6 00:36:43 localhost kernel: EXT4-fs (mmcblk0gl): error loading journal
Jan 6 00:38:13 localhost kernel: EXT4-fs (mmcblk0gl): error loading superblock
| 日志内容 | 含义 |
|---|---|
I/O error, dev mmcblk0gp2 |
对 eMMC 分区 gp2 进行读写时发生 I/O 错误 |
error loading journal |
文件系统日志无法加载,通常是 FS 损坏前兆 |
error loading superblock |
超级块损坏或无法读取 → 文件系统无法挂载 |
结论:eMMC 存储介质已出现物理损坏或严重错误,导致写入失败,固件无法持久化写入新分区。
尽管底层写入失败,但升级流程可能在前期校验或解包阶段成功,进入“升级中”状态,随后因 I/O 错误未能完成最终写入。结合知识库信息,此流程如下:
FwUpgrade 模块管理(如 firmware_mgmt 服务);fw_pkg_work.lua 写入闪存失败;
示例相关日志特征(来自知识库):
firmware_mgmt ERROR: hpm_package.lua(207): decrypt srcfile failed...ERROR: print_req_error: I/O error, dev mmcblk0gp2
您的硬件配置为:
该平台使用 eMMC 作为 BMC 的主要存储介质。长期频繁升级、掉电异常、高温运行等因素可能导致 eMMC 寿命耗尽或坏块累积。
提示:eMMC 块设备(如
mmcblk0)在嵌入式系统中常见,其寿命有限(P/E 次数约 3k~10k),一旦出现superblock加载失败,基本判定为介质故障。
适用于:确认硬件损坏
dmesg | grep mmcblk0
fdisk -l /dev/mmcblk0
e2fsck -v /dev/mmcblk0gp1
适用于:仍可登录 SSH 的情况
# 查看详细错误
dmesg | grep -i "i/o\|mmc\|blk"
# 检查文件系统
fsck /dev/mmcblk0p<partition>
# 避免继续升级操作,防止加速介质损坏
请勿再执行任何写操作(如升级、日志记录、配置变更)以免加剧损坏。
参考知识库中的讨论(https://discuss.openubmc.cn/t/topic/1698):
Tzyy_Q_wbdc2 和 bakbad 报告类似问题:使用自签名固件包时因公私钥不匹配导致升级失败;validate_sign.lua:148: An error occurred during the firmware upgrade process. Details: add crl file is error
crypto_tool 工具对 HPM 包签名;manifest.yml 中包含正确 rootca_crl 和签名配置;提供完整日志以供进一步分析:
# 收集关键日志
cat /var/log/messages | grep -i "upgrade\|firmware\|mmc"
dmesg > dmesg.log
ipmcget -d version
# Web 端截图升级界面及错误提示
并将日志提交至:
| 措施 | 说明 |
|---|---|
| 定期备份 eMMC 镜像 | 使用 dd if=/dev/mmcblk0 of=/tmp/bmc.img 备份原始镜像 |
| 避免频繁升级 | 每次升级都消耗 eMMC 寿命 |
| 确保升级期间不断电 | 异常断电是最常见导致文件系统损坏的原因 |
| 启用只读根文件系统 | 减少运行时写入,延长寿命 |
| 监控 eMMC 健康状态 | 通过 smartctl(如有支持)或内核日志预警 |
| 项目 | 内容 |
|---|---|
| 问题本质 | eMMC 存储介质损坏导致固件写入失败 |
| 表现现象 | Web 显示升级成功,但版本未更新,系统回退 |
| 日志证据 | I/O error, error loading superblock, EXT4-fs 故障 |
| 根本原因 | eMMC 物理故障或寿命耗尽 |
| 解决方案 | 更换模组 > 文件系统修复 > 防止再次写入 |
| 防范建议 | 备份、减少写操作、使用签名工具正确打包 |
强烈建议:立即停止任何升级操作,优先排查 eMMC 硬件状态。否则即使临时恢复,也将面临随时宕机风险。
如需进一步协助,请提供完整日志文件及设备运行时长、升级次数等信息。
相关链接:
请附一下一键日志收集,当前日志截图无法分析具体原因
升级失败日志如上所示,林工,抽空帮忙看下是啥问题
好的,日志收到,我看下
林工,你好,有啥进展不? 是不是Flash本身出了毛病呀?能修复不
根据日志定位到,启动时L1在校验rootfs后写flash报错,报错是写active区写不进去,可能是active的写保护无法解除,可以排查看看emmc器件是否异常
嗯,好的。
对了,林工,这个active区的写保护 在L1阶段有啥命令 啥的能操作它吗 或者是在Uboot阶段
写保护是代码内部做的,在升级时写flash因此会解除写保护再去写
也就是说这是软件上对于active和backup分区的一种保护机制,不是对应实际上硬件的Flash的WP信号是吧?可以这么理解不
是硬件上的WP信号,软件内部是通过调用底层接口执行的解除写保护和打开写保护,实质应还是emmc器件上的写保护机制
哦哦,好的,我还以为是软件上的某种设计机制
好的