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升级相关接口

bash
NAME                                      TYPE      SIGNATURE   RESULT/VALUE                             FLAGS
.ActivateFirmware                         method    a{ss}as         -                                      -
.ExportBiosFirmware                       method    a{ss}           u                                      -
.GetFirmwareInfo                          method    a{ss}           s                                      -

功能说明

属性内容
接口名bmc.kepler.Systems.BiosUpgradeService
首发版本openUBMC 25.03
废弃状态正常可用
方法配置参数
方法名入参类型出参类型描述取值范围
ActivateFirmwarea{ss}as-生效Bios固件入参:
a{ss}: 额外信息,预留
as: 组件ID列表,可包含imu、imp等
出参:无
ExportBiosFirmwarea{ss}u导出Bios固件信息入参:
a{ss}: 额外信息,预留
出参:
u: 返回任务Id
GetFirmwareInfoa{ss}s获取Bios固件信息入参:
a{ss}: 额外信息,预留
出参:
s: Bios固件信息

属性参数说明

属性名类型描述取值范围
ActivatedStatusU8Bios无感升级固件生效状态枚举值0/1/2,0:生效完成; 1:待生效; 2:生效中
FirmwareEffectiveStatusU8Bios普通升级固件生效状态枚举值1/2/3,1:待生效; 2:生效中; 3:生效完成
PreserveConfigEnabledBooleanBios配置保留使能true: 升级后保留配置; false: 升级后不保留配置

返回值与异常

返回值类型含义触发条件处理建议
0 (成功)操作成功固件生效/导出正常执行
TaskId返回任务IdBios固件导出

应用场景

  • 执行无感升级后,激活新版本的BIOS固件
  • 导出当前BIOS固件
  • 获取BIOS固件信息

限制条件

  • ActivateFirmware需要是可生效固件,必须先执行过无感升级
  • PreserveConfigEnabled仅在bmc.kepler.UpdateService的StartUpgrade方法未传保留配置参数时生效

调试示例

命令行调试
bash
# 激活Bios固件
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService \
 ActivateFirmware a{ss}as 0 1 "None"

# 导出Bios固件
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService \
 ExportBiosFirmware a{ss} 0

响应:u 1

# 获取Bios固件信息
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService \
 GetFirmwareInfo a{ss} 0

响应:s "{...}"

# 读取生效状态属性
busctl --user get-property bmc.kepler.bios \
 /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService \
 ActivatedStatus

响应:y 0

# 读取固件生效状态属性
busctl --user get-property bmc.kepler.bios \
 /bmc/kepler/Systems/1/BiosUpgradeService bmc.kepler.Systems.BiosUpgradeService \
 FirmwareEffectiveStatus

响应:y 3

2.2 BIOS配置相关接口

bash
NAME                                      TYPE      SIGNATURE               RESULT/VALUE  FLAGS
.ClearCmos                                method    a{ss}                        i             -
.ResetSetupConfig                         method    a{ss}                        i             -
.ChangePassword                           method    a{ss}sss                     i             -
.ImportBiosSetup                          method    a{ss}ss                      i             -
.ExportBiosSetup                          method    a{ss}s                       s             -
.GetCurrentValueSetting                   method    a{ss}s                       s             -
.RemoveCachedSettings                     method    a{ss}                        i             -
.VerifyPassword                           method    a{ss}ss                      -             -
.SetBiosLogEnabled                        method    a{ss}y                       i             -
.SetBiosConfigActiveMode                  method    a{ss}u                       -             -

功能说明

属性内容
接口名bmc.kepler.Systems.Bios
首发版本openUBMC 25.03
废弃状态正常可用
方法配置参数
方法名入参类型出参类型描述取值范围
ClearCmosa{ss}i清除BIOS配置信息(CMOS)入参:
a{ss}: 额外信息,预留
出参:
i: 清除结果,0成功,-1失败
ResetSetupConfiga{ss}i清除BIOS配置以及待生效配置入参:
a{ss}: 额外信息,预留
出参:
i: 清除结果,0成功,-1失败
ChangePassworda{ss}sssi修改BIOS密码入参:
a{ss}: 额外信息,预留
s: PasswordType,密码类型(Supervisor/User)
s: OldPassword,旧密码
s: NewPassword,新密码
出参:
i: 修改结果,0成功,-1失败
ImportBiosSetupa{ss}ssi导入Bios配置入参:
a{ss}: 额外信息,预留
s: FileType,导入文件类型(PolicyConfig/Setting/Webconfig)
s: Content,导入文件内容
出参:
i: 导入结果,0成功,-1失败
ExportBiosSetupa{ss}ss导出Bios的配置入参:
a{ss}: 额外信息,预留
s: FileType,导出文件类型(WebConfig/PolicyConfigJson/PolicyRegisteryJson/ComponentVersion/Registry/CurrentValue/Setting/Result/ConfigValue)
出参:
s: 导出配置结果
GetCurrentValueSettinga{ss}ss获取属性当前配置的值入参:
a{ss}: 额外信息,预留
s: ReqKey,属性名
出参:
s: 属性当前配置的值
RemoveCachedSettingsa{ss}i清除待生效的配置入参:
a{ss}: 额外信息,预留
出参:
i: 清除结果,0成功,-1失败
VerifyPassworda{ss}ss-校验待生效BIOS密码入参:
a{ss}: 额外信息,预留
s: PasswordType,密码类型
s: Password,待校验密码
出参:无
SetBiosLogEnableda{ss}yi设置BIOS日志全打印开关入参:
a{ss}: 额外信息,预留
y: BiosLogPrintEnabled,0关闭,1开启
出参:
i: 设置结果,0成功,-1失败
SetBiosConfigActiveModea{ss}u-设置BIOS配置导入的生效模式入参:
a{ss}: 额外信息,预留
u: Mode,0:导入待生效配置重启后生效,1:恢复默认再导入重启后生效
出参:无

属性参数说明

属性名类型描述取值范围
SystemStartupStateU8Bios启动状态枚举值:0未启动, 32初始化ME完成, 64PCIe信息上报完成, 96SMBIOS write prepare, 99SMBIOS write start, 102SMBIOS write finish, 111进入PXE, 254Post完成
VersionStringBios版本信息readOnly
BackupVersionStringBios备份版本信息readOnly
CurrentValueFileNameString当前生效的配置文件readOnly
ResultFileNameString配置生效结果文件readOnly
SettingFileNameString待生效配置文件readOnly
RegistryFileNameString标准配置文件readOnly
BiosConfigActiveModeU64BIOS配置导入的生效模式0:导入待生效配置, 1:恢复默认再导入
ResetBiosToDefaultsPendingBoolean恢复默认命令是否未生效true:存在(未生效),false:不存在(已生效)
UpgradeFailedU8正常升级后Flash完整性校验状态readOnly
RecoverFailedU8自恢复后Flash完整性校验状态readOnly

返回值与异常

返回值类型含义触发条件处理建议
0 (成功)操作成功正常执行
-1 (失败)操作失败密码错误/配置格式不符/权限不足检查输入参数

应用场景

  • 导入BIOS配置,包括配置标准文件验证和依赖关系校验
  • 导出当前BIOS配置
  • 获取指定BIOS配置属性的当前值
  • 修改BIOS密码
  • 清除BIOS配置信息(CMOS)
  • 清除BIOS待生效配置
  • 设置BIOS日志全打印开关
  • 校验BIOS密码

限制条件

  • ImportBiosSetup导入配置必须符合格式和BIOS依赖关系
  • ChangePassword旧密码必须正确,新密码必须符合BIOS密码校验规则
  • ClearCmos/ResetSetupConfig需要用户配置权限

调试示例

命令行调试
bash
# 导入BIOS配置
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 ImportBiosSetup a{ss}ss 3 Interface "Setting" "{}"

响应:i 0

# 导出BIOS配置
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 ExportBiosSetup a{ss}s 0 "Setting"

响应:s "{...}"

# 获取指定属性的当前值
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 GetCurrentValueSetting a{ss}s 0 "NetworkProtocol"

响应:s "DHCP"

# 修改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"

响应:i 0

# 清除CMOS
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 ClearCmos a{ss} 0

响应:i 0

# 清除待生效配置
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 ResetSetupConfig a{ss} 0

响应:i 0

# 设置BIOS全打印开关
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 SetBiosLogEnabled a{ss}y 0 1

响应:i 0

# 校验BIOS密码
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 VerifyPassword a{ss}ss 0 "Supervisor" "Admin@9000"

# 读取BIOS版本
busctl --user get-property bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 Version

响应:s "5.xx.xxx"

# 读取BIOS启动状态
busctl --user get-property bmc.kepler.bios \
 /bmc/kepler/Systems/1/Bios bmc.kepler.Systems.Bios \
 SystemStartupState

响应:y 254

2.3 启动项相关接口

bash
NAME                                      TYPE      SIGNATURE               RESULT/VALUE  FLAGS
.SetBootMode                              method    a{ss}s                       i             -
.SetBootOrder                             method    a{ss}s                       iss           -
.SetStartOption                           method    a{ss}s                       i             -
.SetStartOptionFlag                       method    a{ss}s                       i             -
.ShieldIpmiModifyBootModeSupport          method    a{ss}b                       i             -

功能说明

属性内容
接口名bmc.kepler.Systems.BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
方法配置参数
方法名入参类型出参类型描述取值范围
SetBootModea{ss}si设置Bios启动模式入参:
a{ss}: 额外信息,预留
s: mode,启动模式(UEFI)
出参:
i: RespCode,设置结果
SetBootOrdera{ss}siss设置Bios启动顺序入参:
a{ss}: 额外信息,预留
s: BootOrderJson,启动顺序JSON
出参:
i: OutCode,返回码
s: ErrName,错误名
s: ErrValue,错误值
SetStartOptiona{ss}si设置Bios启动项入参:
a{ss}: 额外信息,预留
s: StartOption,启动项(None/Pxe/Floppy/Cd/Hdd/BiosSetup)
出参:
i: Result,设置结果
SetStartOptionFlaga{ss}si设置Bios启动项生效次数入参:
a{ss}: 额外信息,预留
s: StartOptionFlag,生效次数(Disabled/Once/Continuous)
出参:
i: Result,设置结果
ShieldIpmiModifyBootModeSupporta{ss}bi屏蔽是否可以通过ipmi设置启动模式入参:
a{ss}: 额外信息,预留
b: ModeSwitch,屏蔽开关
出参:
i: RespCode,屏蔽结果

属性参数说明

属性名类型描述取值范围
BootSourceOverrideModeString系统启动模式Legacy或UEFI,默认UEFI
BootSourceOverrideEnabledString系统启动项生效次数Disabled/Once/Continuous,默认Disabled
BootSourceOverrideTargetString系统启动项默认HDD
BootOrderString[]系统启动项启动顺序readOnly
BootModeSupportBooleanBIOS启动模式是否支持设置默认true
BootModeIpmiSettableBooleanBIOS启动模式是否支持通过IPMI设置默认true
BootOptionPolicyU8定制化启动项策略0:不定制; 1:设置永久启动项联动修改启动顺序
PreviousBootSourceOverrideTargetString上次设置的永久启动项类型readOnly

返回值与异常

返回值类型含义触发条件处理建议
0 (成功)操作成功正常执行
-1 (失败)操作失败启动模式/顺序不符合规则检查输入参数
ErrName/ErrValue错误名/错误值启动顺序不符合规则检查启动顺序是否符合BIOS规则

应用场景

  • 设置BIOS启动模式
  • 设置BIOS启动顺序
  • 设置BIOS启动项
  • 设置BIOS启动项生效次数
  • 屏蔽IPMI设置启动模式

限制条件

  • 启动顺序必须符合BIOS规则
  • 启动模式当前只支持UEFI

调试示例

命令行调试
bash
# 设置启动模式
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 SetBootMode a{ss}s 0 "UEFI"

响应:i 0

# 设置启动顺序
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 SetBootOrder a{ss}s 0 '{"BootTypeOrder0":"DVDROMDrive","BootTypeOrder1":"PXE","BootTypeOrder2":"HardDiskDrive","BootTypeOrder3":"Others"}'

响应:i 0 s "" s ""

# 设置启动项
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 SetStartOption a{ss}s 0 "Pxe"

响应:i 0

# 设置启动项生效次数
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 SetStartOptionFlag a{ss}s 0 "Continuous"

响应:i 0

# 屏蔽IPMI修改启动模式
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 ShieldIpmiModifyBootModeSupport a{ss}b 0 true

响应:i 0

# 读取当前启动模式
busctl --user get-property bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 BootSourceOverrideMode

响应:s "UEFI"

# 读取当前启动项
busctl --user get-property bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 BootSourceOverrideTarget

响应:s "HDD"

2.4 安全启动证书相关接口

bash
NAME                                      TYPE      SIGNATURE               RESULT/VALUE  FLAGS
.ImportCertificate                        method    a{ss}sss                     -             -
.ResetCertificate                         method    a{ss}ss                      -             -
.GetCertificate                           method    a{ss}                        s             -

功能说明

属性内容
接口名bmc.kepler.Systems.SecureBootOptions
首发版本openUBMC 25.03
废弃状态正常可用
方法配置参数
方法名入参类型出参类型描述取值范围
ImportCertificatea{ss}sss-导入Bios安全启动证书入参:
a{ss}: 额外信息,预留
s: DatabseType,数据库类型(db/dbx)
s: CertString,证书内容
s: CertType,证书类型(PEM)
出参:无
ResetCertificatea{ss}ss-重置Bios安全启动证书入参:
a{ss}: 额外信息,预留
s: DatabseType,数据库类型(db/dbx)
s: ResetType,重置类型(DeleteAllKeys/ResetAllKeysToDefault)
出参:无
GetCertificatea{ss}s获取Bios安全启动证书入参:
a{ss}: 额外信息,预留
出参:
s: CertInfo,证书内容

属性参数说明

属性名类型描述取值范围
SystemIdU8系统IdreadOnly
CertificateExpiredU8证书过期标记默认0

返回值与异常

返回值类型含义触发条件处理建议
CertInfo证书内容获取成功
无返回值操作成功导入/重置成功

应用场景

  • 导入BIOS安全启动证书
  • 重置BIOS安全启动证书
  • 获取BIOS安全启动证书

限制条件

  • 导入证书格式必须正确,目前只支持PEM格式
  • BIOS不能处于启动阶段

调试示例

命令行调试
bash
# 获取安全启动证书
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/SecureBootOptions bmc.kepler.Systems.SecureBootOptions \
 GetCertificate a{ss} 0

响应:s "{...}"

# 导入安全启动证书
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/SecureBootOptions bmc.kepler.Systems.SecureBootOptions \
 ImportCertificate a{ss}sss 0 "db" "<证书内容>" "PEM"

# 重置安全启动证书
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/SecureBootOptions bmc.kepler.Systems.SecureBootOptions \
 ResetCertificate a{ss}ss 0 "db" "DeleteAllKeys"

# 读取证书过期标记
busctl --user get-property bmc.kepler.bios \
 /bmc/kepler/Systems/1/SecureBootOptions bmc.kepler.Systems.SecureBootOptions \
 CertificateExpired

响应:y 0

2.5 HTTPS启动证书相关接口

bash
NAME                                      TYPE      SIGNATURE               RESULT/VALUE  FLAGS
.ImportCertificate                        method    a{ss}ss                      -             -
.ImportCrl                                method    a{ss}ss                      -             -
.ResetCertificate                         method    a{ss}s                       -             -
.ResetCrl                                 method    a{ss}s                       -             -
.GetCertificate                           method    a{ss}                        s             -

功能说明

属性内容
接口名bmc.kepler.Systems.BootOptions
首发版本openUBMC 25.03
废弃状态正常可用
方法配置参数
方法名入参类型出参类型描述取值范围
ImportCertificatea{ss}ss-导入Bios的Https启动证书入参:
a{ss}: 额外信息,预留
s: CertString,Https证书内容
s: CertType,Https证书类型(PEM)
出参:无
ImportCrla{ss}ss-导入Bios的Https启动证书吊销列表入参:
a{ss}: 额外信息,预留
s: CertString,Https吊销证书内容
s: CertType,Https吊销证书类型(PEM)
出参:无
ResetCertificatea{ss}s-重置Bios的Https启动证书入参:
a{ss}: 额外信息,预留
s: ResetType,重置类型(DeleteAllKeys/ResetAllKeysToDefault)
出参:无
ResetCrla{ss}s-重置Bios的Https启动证书吊销列表入参:
a{ss}: 额外信息,预留
s: ResetType,重置类型(DeleteAllKeys/ResetAllKeysToDefault)
出参:无
GetCertificatea{ss}s获取Bios的Https启动证书入参:
a{ss}: 额外信息,预留
出参:
s: CertInfo,证书数据

返回值与异常

返回值类型含义触发条件处理建议
CertInfo证书数据获取成功
无返回值操作成功导入/重置成功

应用场景

  • 导入BIOS的HTTPS启动证书
  • 导入BIOS的HTTPS启动证书吊销列表
  • 重置BIOS的HTTPS启动证书
  • 重置BIOS的HTTPS启动证书吊销列表
  • 获取BIOS的HTTPS启动证书

限制条件

  • 证书格式必须正确,目前只支持PEM格式
  • BIOS不能处于启动阶段

调试示例

命令行调试
bash
# 获取Https启动证书
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 GetCertificate a{ss} 0

响应:s "{...}"

# 导入Https启动证书
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 ImportCertificate a{ss}ss 0 "<证书内容>" "PEM"

# 导入Https证书吊销列表
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 ImportCrl a{ss}ss 0 "<CRL内容>" "PEM"

# 重置Https启动证书
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 ResetCertificate a{ss}s 0 "DeleteAllKeys"

# 重置Https证书吊销列表
busctl --user call bmc.kepler.bios \
 /bmc/kepler/Systems/1/BootOptions bmc.kepler.Systems.BootOptions \
 ResetCrl a{ss}s 0 "DeleteAllKeys"

2.6 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初始版本创建