网页端更新BIOS显示升级失败问题分析
更新时间: 2026/05/20
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:openUBMC 25.06;
- 涉及功能:BIOS升级;
- 触发条件:web页面升级BIOS;
- 业务表现:预期升级成功;实际升级失败。
问题复现步骤
openUBMC管理->固件升级->固件更新页面,选择不保留配置升级后上传升级文件S920S10X10_Update_CS_2P_cms.hpm,点击确认升级后,升级BIOS子部件。
关键日志信息
web页面升级失败: app.log日志文件显示快照创建失败:
定位过程
- app.log上看,BIOS升级过程中组件BIOS相关日志报错"get snapshot fail",这个snapshot是BIOS升级要调用的对象,这个snapshot是跟着BIOS对象的,只有BIOS对象分发了才会创建这个对象,查看日志,确认BIOS对象是否分发;
- 日志全量搜索,无BIOS对象"/bmc/kepler/Systems/1/Bios"分发; 正常情况下,日志搜索后,应该查看到bios对象"/bmc/kepler/Systems/1/Bios"分发结果如下:
- 确认BIOS对象是在基础板BCU的csr文件中配置,需要确认当前自研板的csr文件配置方式;
- 与板子开发确认,板子为非天池标准板,没有BCU,只有一个bmc和模块焊接在载板上,并且把载板当EXU用,且sr文件是自研开发按照其他sr进行修改后得到的。
问题原因
自研板无基础板BCU,社区的BIOS相关资源都在BCU板中,自研CSR文件在开发的过程中没有将BCU涉及BIOS的对象等进行开发或者转移到自己开发的代码中,导致代码中无法查询到对应的对象信息,无法加载资源树,最后导致升级失败;
解决方案
/bmc/kepler/Systems/1/Bios的加载对应的代码适配在bcu的sr文件里,如果板卡没有BCU可将对应的功能移到root.sr里即可。