bios
更新时间: 2026/05/18
在Gitcode上查看源码

bios

版本信息

项目内容
组件版本1.110.6
首发版本1.70.30
文档作者openUBMC
最后更新2026-05-18

1. 组件概述

1.1 组件简介

bios组件是OpenUBMC系统中的BIOS管理组件,主要负责与BIOS带内交互,实现BIOS配置、证书、升级和PFR(Platform Firmware Resilience)自愈等功能。

1.2 解决什么问题

BIOS组件为使用者解决以下核心问题:

  • BIOS固件升级:支持普通升级、无感升级、装备升级等多种模式
  • BIOS配置管理:支持配置导入导出、启动项设置、启动模式配置
  • BIOS证书管理:支持安全启动证书、HTTPS启动证书的管理
  • PFR自愈:确保BIOS固件完整性和可恢复性,防止恶意篡改

1.3 核心功能

  • 核心功能一:BIOS升级 - 支持普通升级、无感升级、teeos升级、krun升级等多种升级模式
  • 核心功能二:BIOS配置导入导出 - 支持bios配置导入导出,启动项、启动模式设置,无感升级策略重配
  • 核心功能三:BIOS证书管理 - 支持bios启动证书、安全启动证书、吊销证书管理
  • 核心功能四:PFR自愈功能 - BIOS镜像校验,确保固件完整性和可恢复性

1.4 关键术语表

术语解释
装备升级打包manufacture文件夹的升级模式,会执行强制上下电
无感升级通过ipmb通道将固件传到imu,实现在线升级
普通升级非装备包的升级模式,可选择缓存生效或下电生效
补丁包版本包含HPxxxx的升级包,用于无感升级
PFRPlatform Firmware Resilience,平台固件韧性,保证固件完整性和可恢复性
CMS签名用于校验BIOS固件完整性的数字签名

1.5 外部交互边界图

  • pcie_device:订阅PcieAddrInfo对象的ReadyToEnumerate属性变化,更新PcieAddrInfo对象的SlotId、SocketId、Segment等丝印属性,为BIOS提供丝印文件数据。
  • IMU(带内):向IMU查询无感升级策略重配相关配置文件。
  • BIOS(带内):BIOS启动阶段想带内提供丝印文件等信息,获取SMBIOS、BDF等信息。
  • FruCtrl:BIOS预上电时加上电锁进行pfr校验,BIOS启动过程中给BMC加重启锁防止交互异常。

2. API 使用说明与示例

2.1 BIOS升级相关接口

/bmc/kepler/Systems/${SystemId}/BiosUpgradeService - ActivateFirmware

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BiosUpgradeService
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
ComponentIds输入as组件ID列表可包含IMU、IMP、SCC
返回值与异常
应用场景

执行无感升级后,激活新版本的BIOS固件。

限制条件

需要是可生效固件,必须先执行过无感升级。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService ActivateFirmware a{ss}as 0 1 "None"

/bmc/kepler/Systems/${SystemId}/BiosUpgradeService - ExportBiosFirmware

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BiosUpgradeService
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
返回值与异常
返回值含义触发条件处理建议
TaskId返回任务IdBios固件导出
应用场景

导出当前BIOS固件。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService ExportBiosFirmware a{ss} 0

2.2 BIOS配置相关接口

/bmc/kepler/Systems/${SystemId}/Bios - ImportBiosSetup

属性内容
接口名/bmc/kepler/Systems/${SystemId}/Bios
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
FileType输入s导入文件类型PolicyConfig, Setting, Webconfig
Content输入s导入文件内容导入文件内容
返回值与异常
应用场景

导入BIOS配置,包括配置标准文件验证和依赖关系校验。

限制条件

导入配置必须符合格式和BIOS依赖关系。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios ImportBiosSetup a{ss}ss 3 Interface "Setting" "{}"

/bmc/kepler/Systems/${SystemId}/Bios - ExportBiosSetup

属性内容
接口名/bmc/kepler/Systems/${SystemId}/Bios
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
FileType输入s导出文件类型WebConfig, PolicyConfigJson, PolicyRegisteryJson, ComponentVersion
返回值与异常
应用场景

导出当前BIOS配置。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios ExportBiosSetup a{ss}s 0 "Setting"

/bmc/kepler/Systems/${SystemId}/Bios - GetCurrentValueSetting

属性内容
接口名/bmc/kepler/Systems/${SystemId}/Bios
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
ReqKey输入s属性名称BIOS配置属性名
返回值与异常
返回值含义触发条件处理建议
RespValue属性当前配置的值获取成功
应用场景

获取指定BIOS配置属性的当前值。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios GetCurrentValueSetting a{ss}s 0 "NetworkProtocol"

/bmc/kepler/Systems/${SystemId}/Bios - ChangePassword

属性内容
接口名/bmc/kepler/Systems/${SystemId}/Bios
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
PasswordType输入s密码类型管理员或者普通用户
OldPassword输入s旧密码正确的旧密码
NewPassword输入s新密码符合校验规则的新密码
返回值与异常
返回值含义触发条件处理建议
Result修改结果,失败:-1,成功:0密码修改
应用场景

修改BIOS密码。

限制条件

旧密码必须正确,新密码必须符合BIOS密码校验规则。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios ChangePassword a{ss}sss 0 "Supervisor" "Admin@9000" "Admin@90000"

/bmc/kepler/Systems/${SystemId}/Bios - ClearCmos

属性内容
接口名/bmc/kepler/Systems/${SystemId}/Bios
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
应用场景

清除BIOS配置信息(CMOS)。

限制条件

需要用户配置权限。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios ClearCmos a{ss} 0

/bmc/kepler/Systems/${SystemId}/Bios - ResetSetupConfig

属性内容
接口名/bmc/kepler/Systems/${SystemId}/Bios
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
应用场景

清除BIOS待生效配置。

限制条件

需要用户配置权限。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios ResetSetupConfig a{ss} 0

/bmc/kepler/Systems/${SystemId}/Bios - SetBiosLogEnabled

属性内容
接口名/bmc/kepler/Systems/${SystemId}/Bios
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
Enabled输入y日志开关0表示关闭,1表示开启
应用场景

设置BIOS日志全打印开关。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios SetBiosLogEnabled a{ss}y 0 0

2.3 启动项相关接口

/bmc/kepler/Systems/${SystemId}/BootOptions - SetBootMode

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
BootMode输入s启动模式当前只支持UEFI
返回值与异常
返回值含义触发条件处理建议
RespCode设置Bios启动模式结果启动模式设置
应用场景

设置BIOS启动模式。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions SetBootMode a{ss}s 0 "UEFI"

/bmc/kepler/Systems/${SystemId}/BootOptions - SetBootOrder

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
BootOrderJson输入s启动顺序启动顺序符合规则
返回值与异常
返回值含义触发条件处理建议
OutCode返回码启动顺序设置
ErrName启动顺序错误名启动顺序不符合规则检查启动顺序是否符合规则
ErrValue动顺序错误值启动顺序不符合规则检查启动顺序是否符合规则
应用场景

设置BIOS启动顺序。

限制条件

启动顺序必须符合BIOS规则。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions SetBootOrder a{ss}s 0 "{"BootTypeOrder0":"DVDROMDrive", "BootTypeOrder1":"PXE","BootTypeOrder3":"Others","BootTypeOrder2":"HardDiskDrive"}"

/bmc/kepler/Systems/${SystemId}/BootOptions - SetStartOption

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
StartOption输入s启动项可选:None、Pxe、Floppy、Cd、Hdd、BiosSetup
返回值与异常
返回值含义触发条件处理建议
Result设置Bios启动项结果启动项设置
应用场景

设置BIOS启动项。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions SetStartOption a{ss}s 0 "None"

/bmc/kepler/Systems/${SystemId}/BootOptions - SetStartOptionFlag

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
StartOptionFlag输入s生效次数可选:Disabled、Once、Continuous
返回值与异常
返回值含义触发条件处理建议
Result设置Bios启动项次数结果启动项生效次数设置
应用场景

设置BIOS启动项生效次数。

调试示例

busctl --user call bmc.kepler.bios /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions SetStartOptionFlag a{ss}s 0 "Continuous"

2.4 证书管理相关接口

/bmc/kepler/Systems/${SystemId}/SecureBootOptions - GetCertificate

属性内容
接口名/bmc/kepler/Systems/${SystemId}/SecureBootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
返回值与异常
返回值含义触发条件处理建议
CertInfoBios的Https启动证书类型获取成功
应用场景

获取BIOS安全启动证书。

限制条件

BIOS不能处于启动阶段。

/bmc/kepler/Systems/${SystemId}/SecureBootOptions - ImportCertificate

属性内容
接口名/bmc/kepler/Systems/${SystemId}/SecureBootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
DatabseType输入s数据库类型db、dbx
CertString输入s安全启动证书内容
CertType输入s安全启动证书类型证书内容类型,目前只支持PEM
返回值与异常
应用场景

导入BIOS安全启动证书。

限制条件

导入证书格式必须正确,BIOS不能处于启动阶段。

/bmc/kepler/Systems/${SystemId}/SecureBootOptions - ResetCertificate

属性内容
接口名/bmc/kepler/Systems/${SystemId}/SecureBootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
DatabseType输入s数据库类型db、dbx
ResetType输入s重置Bios安全启动证书操作类型目前只支持DeleteAllKeys、ResetAllKeysToDefault
返回值与异常
应用场景

重置BIOS安全启动证书。

限制条件

BIOS不能处于启动阶段。

/bmc/kepler/Systems/${SystemId}/BootOptions - GetCertificate

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
返回值与异常
返回值含义触发条件处理建议
CertInfo证书数据获取成功
应用场景

获取BIOS的HTTPS启动证书。

限制条件

BIOS不能处于启动阶段。

/bmc/kepler/Systems/${SystemId}/BootOptions - ImportCertificate

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
CertString输入sHttps启动证书内容
CertType输入sHttps证书类型证书类型(PEM格式)
返回值与异常
应用场景

导入BIOS的HTTPS启动证书。

限制条件

证书格式必须正确,BIOS不能处于启动阶段。

/bmc/kepler/Systems/${SystemId}/BootOptions - ImportCrl

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
CertString输入sHttps启动证书内容
CertType输入sHttps证书类型证书类型(PEM格式)
返回值与异常
应用场景

导入BIOS的HTTPS启动证书吊销列表。

限制条件

BIOS不能处于启动阶段。

/bmc/kepler/Systems/${SystemId}/BootOptions - ResetCertificate

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
ResetType输入s重置Bios Https证书操作类型目前只支持DeleteAllKeys、ResetAllKeysToDefault
返回值与异常
应用场景

重置BIOS的HTTPS启动证书。

限制条件

BIOS不能处于启动阶段。

/bmc/kepler/Systems/${SystemId}/BootOptions - ResetCrl

属性内容
接口名/bmc/kepler/Systems/${SystemId}/BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
替代接口
参数说明
参数名方向类型描述取值范围
ResetType输入s重置Bios Https吊销证书操作类型目前只支持DeleteAllKeys、ResetAllKeysToDefault
返回值与异常
应用场景

重置BIOS的HTTPS启动证书吊销列表。

限制条件

BIOS不能处于启动阶段。

2.5 IPMI接口

命令描述
SetBootOption设置启动项
GetBootOption获取启动项
GetBiosGoldValid获取固件备份状态
GetBiosBootInfo获取bios启动参数
GetFileChanged获取bios配置文件修改状态
GetSmBiosInfo获取smbios信息
ReadFileFromBmc从bmc读取配置文件
SetBiosBootInfo设置bios启动参数
SetBiosVersion设置bios版本
SetCertificateAssertion设置bios证书过期告警
SetFileChanged设置bios配置文件修改状态
SetSmBiosInfo设置smbios信息
UpdateBiosPassword设置bios密码
UpdateBiosStatus设置bios启动状态
UpdatePostStatus设置bios完成启动状态
WriteFileToBmc上报bios配置文件
WriteSmbiosData上报smbios配置文件
GetAllowedPackageType获取装备模式允许升级的Bios包的安全类型
SetAllowedPackageType设置装备模式允许升级的Bios包的安全类型
SetBaseOSBootEvent设置bios传感器告警
GetBiosConfiguration获取bios配置项
SetBiosConfiguration设置bios配置项
SetKrunVersion设置Krun固件版本号

3. 组件扩展案例

3.1 扩展能力概述

不适用

3.2 扩展点说明

不适用

3.3 二次开发指导

不适用

4. 日志说明

4.1 一键日志收集

文件路径内容说明
dump_info/AppDump/bios/setting.json用户的Bios配置数据
dump_info/AppDump/bios/currentValue.json当前生效的Bios配置
dump_info/AppDump/bios/Registry.json配置的标准文件
dump_info/AppDump/bios/result.jsonBios运行的记录文件
dump_info/AppDump/bios/silkconfig.json丝印配置文件
dump_info/AppDump/bios/SMBIOS_CONFSMBIOS配置信息

4.2 关键日志信息

日志片段日志级别含义解读建议处理动作
Switch spi to BMC(BIOS)INFOSPI链路切换到BMC侧正常流程,无需处理
Switch spi to BMC(BIOS) failedERRORSPI链路切换失败检查硬件连接和驱动
verify signature error, code 88200312ERROR包签名校验失败替换与BMC签名一致的HPM包
sys-uid not in update.cfg's ProductUIDListERRORHPM包与机型不符使用符合机型的HPM包
parse package failed, ret:InvalidFirmwarePackageERRORHPM包缺少cfg文件获取带外升级使用的HPM包
[spi]check_device_ready: ready failERRORSPI设备未就绪检查硬件问题,联系厂商
PackageCheckExecutor: upgrade patch package in equipment modeERROR装备模式不能升级补丁包更换为普通包或非装备模式
ComponentFilter: skip componentINFO无感升级跳过版本一致的固件正常流程,无需处理

5. 问题定界指南

5.1 典型问题定界

现象描述是否为本组件问题判断依据关键证据收集方法
BIOS升级显示无效的升级包包签名校验失败或包类型不匹配查看app.log中的签名错误日志
BIOS升级成功后版本号未变依赖BIOS上报版本号确认BIOS在新版本上报过版本号
非装备包OS上电升级无法用reboot生效默认下电生效模式检查csr配置或使用ipmi命令设置
BIOS升级完成后未保留配置装备包默认全擦检查是否为装备包,装备包默认不保留配置
无感升级失败多种可能原因检查BIOS启动状态、包类型、升级模式

5.2 错误码速查表

错误码含义可能原因排查建议
0x03000049PSU.PSULinkAbnormal主板AVSBUS、PMBUS链路异常更换CPU板
0x01000073Memory.MemoryI2CI3CLinkAbnormal1、内存故障 2、主板I2C/I3C链路异常1、更换内存 2、更换主板
0x24000031CPUBoard.VRPowerRedundancyFailureVR电源(单相)工作异常更换主板

5.3 调试方法

开启调试日志

bios组件的调试日志随app.log输出,日志级别由系统统一配置。在调试场景下,可通过以下方式增加日志获取量:

busctl --user call bmc.kepler.bios /bmc/kepelr/compute/MicroComponent bmc.kepler.MicroComponent SetDlogLevel a{ss}sy 0 debug 2

复现问题方法

  1. 确认升级包类型和升级模式匹配
  2. 确认BIOS启动状态(无感升级需要BIOS启动完成)
  3. 检查SPI链路状态
  4. 查看app.log中的详细错误信息

6. 常见问题解答

Q1:BIOS升级显示无效的升级包

  • 问题描述:升级BIOS时提示无效的升级包
  • 一句话答案:包签名校验失败或包与机型不匹配
  • 根因说明:可能是签名与BMC不匹配、HPM包与实际机型不符、HPM包缺少必要的cfg文件
  • 解决方案:根据具体错误日志更换正确的HPM包
  • 规避方案:确保使用与BMC签名一致且符合机型的HPM包
  • 适用版本:所有版本

Q2:BIOS升级成功后版本号未变

  • 问题描述:BIOS升级完成但版本号未更新
  • 一句话答案:BIOS未上报新版本号
  • 根因说明:bios版本号更新依赖bios侧上报版本号,BMC无法主动获取
  • 解决方案:升级结束后需要确认BIOS在新版本上报过版本号
  • 规避方案:检查关键日志确认版本上报
  • 适用版本:所有版本

Q3:非装备包OS上电升级BIOS,无法使用强制重启或者带内reboot生效

  • 问题描述:OS上电状态下升级BIOS,通过reboot无法生效
  • 一句话答案:默认生效条件为下电生效
  • 解决方案:通过修改csr配置实现重启生效,或使用ipmi命令SetCachedBiosUpgradeMode设置
  • 适用版本:所有版本

Q4:BIOS升级完成后未保留配置

  • 问题描述:升级BIOS后配置未保留
  • 一句话答案:装备包默认全擦,非装备包默认保留
  • 根因说明:对于装备包升级BIOS默认不保留配置,对于非装备包默认保留配置
  • 解决方案:使用非装备包升级或在bios下设置manufacture: false
  • 适用版本:所有版本

Q5:BIOS升级过程中失败

  • 问题描述:BIOS升级过程中失败
  • 一句话答案:多种原因可能导致升级失败
  • 根因说明:
    • 包的类型与升级模式不匹配(无感升级只能用补丁包)
    • BIOS未启动完成(无感升级需要BIOS POST完成)
    • SPI链路切换失败
  • 解决方案:
    • 确认升级包类型与升级模式匹配
    • 确认BIOS启动状态
    • 检查SPI链路和驱动
  • 适用版本:所有版本

Q6:丝印上报是怎么回事?

  • 问题描述:什么是丝印上报,作用是什么
  • 一句话答案:BIOS通过IPMI命令从BMC读取丝印信息并更新到BIOS人机界面和SMBIOS
  • 根因说明:BIOS启动时通过ReadFileFromBmc命令从BMC读取silkconfig.json,解析后更新丝印信息
  • 解决方案:这是正常流程,不需要干预
  • 适用版本:所有版本

附录

附录A 参考资料

附录B 修订记录

版本日期修订人修订内容
v1.02025-01-16openUBMC初始版本创建