网页端更新BIOS显示升级失败问题分析
更新时间: 2026/05/20
在Gitcode上查看源码

问题背景

  • 单板类型:自研板;
  • 软件版本:openUBMC 25.06;
  • 涉及功能:BIOS升级;
  • 触发条件:web页面升级BIOS;
  • 业务表现:预期升级成功;实际升级失败。

问题复现步骤

openUBMC管理->固件升级->固件更新页面,选择不保留配置升级后上传升级文件S920S10X10_Update_CS_2P_cms.hpm,点击确认升级后,升级BIOS子部件。

关键日志信息

web页面升级失败: app.log日志文件显示快照创建失败:

定位过程

  1. app.log上看,BIOS升级过程中组件BIOS相关日志报错"get snapshot fail",这个snapshot是BIOS升级要调用的对象,这个snapshot是跟着BIOS对象的,只有BIOS对象分发了才会创建这个对象,查看日志,确认BIOS对象是否分发;
  2. 日志全量搜索,无BIOS对象"/bmc/kepler/Systems/1/Bios"分发; 正常情况下,日志搜索后,应该查看到bios对象"/bmc/kepler/Systems/1/Bios"分发结果如下:
  3. 确认BIOS对象是在基础板BCU的csr文件中配置,需要确认当前自研板的csr文件配置方式;
  4. 与板子开发确认,板子为非天池标准板,没有BCU,只有一个bmc和模块焊接在载板上,并且把载板当EXU用,且sr文件是自研开发按照其他sr进行修改后得到的。

问题原因

自研板无基础板BCU,社区的BIOS相关资源都在BCU板中,自研CSR文件在开发的过程中没有将BCU涉及BIOS的对象等进行开发或者转移到自己开发的代码中,导致代码中无法查询到对应的对象信息,无法加载资源树,最后导致升级失败;

解决方案

/bmc/kepler/Systems/1/Bios的加载对应的代码适配在bcu的sr文件里,如果板卡没有BCU可将对应的功能移到root.sr里即可。