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的升级包,用于无感升级 |
| PFR | Platform 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 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ActivateFirmware | a{ss}as | - | 生效Bios固件 | 入参: a{ss}: 额外信息,预留 as: 组件ID列表,可包含imu、imp等 出参:无 |
| ExportBiosFirmware | a{ss} | u | 导出Bios固件信息 | 入参: a{ss}: 额外信息,预留 出参: u: 返回任务Id |
| GetFirmwareInfo | a{ss} | s | 获取Bios固件信息 | 入参: a{ss}: 额外信息,预留 出参: s: Bios固件信息 |
属性参数说明
| 属性名 | 类型 | 描述 | 取值范围 |
|---|---|---|---|
| ActivatedStatus | U8 | Bios无感升级固件生效状态 | 枚举值0/1/2,0:生效完成; 1:待生效; 2:生效中 |
| FirmwareEffectiveStatus | U8 | Bios普通升级固件生效状态 | 枚举值1/2/3,1:待生效; 2:生效中; 3:生效完成 |
| PreserveConfigEnabled | Boolean | Bios配置保留使能 | true: 升级后保留配置; false: 升级后不保留配置 |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 (成功) | 操作成功 | 固件生效/导出正常执行 | 无 |
| TaskId | 返回任务Id | Bios固件导出 | 无 |
应用场景
- 执行无感升级后,激活新版本的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 32.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 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ClearCmos | a{ss} | i | 清除BIOS配置信息(CMOS) | 入参: a{ss}: 额外信息,预留 出参: i: 清除结果,0成功,-1失败 |
| ResetSetupConfig | a{ss} | i | 清除BIOS配置以及待生效配置 | 入参: a{ss}: 额外信息,预留 出参: i: 清除结果,0成功,-1失败 |
| ChangePassword | a{ss}sss | i | 修改BIOS密码 | 入参: a{ss}: 额外信息,预留 s: PasswordType,密码类型(Supervisor/User) s: OldPassword,旧密码 s: NewPassword,新密码 出参: i: 修改结果,0成功,-1失败 |
| ImportBiosSetup | a{ss}ss | i | 导入Bios配置 | 入参: a{ss}: 额外信息,预留 s: FileType,导入文件类型(PolicyConfig/Setting/Webconfig) s: Content,导入文件内容 出参: i: 导入结果,0成功,-1失败 |
| ExportBiosSetup | a{ss}s | s | 导出Bios的配置 | 入参: a{ss}: 额外信息,预留 s: FileType,导出文件类型(WebConfig/PolicyConfigJson/PolicyRegisteryJson/ComponentVersion/Registry/CurrentValue/Setting/Result/ConfigValue) 出参: s: 导出配置结果 |
| GetCurrentValueSetting | a{ss}s | s | 获取属性当前配置的值 | 入参: a{ss}: 额外信息,预留 s: ReqKey,属性名 出参: s: 属性当前配置的值 |
| RemoveCachedSettings | a{ss} | i | 清除待生效的配置 | 入参: a{ss}: 额外信息,预留 出参: i: 清除结果,0成功,-1失败 |
| VerifyPassword | a{ss}ss | - | 校验待生效BIOS密码 | 入参: a{ss}: 额外信息,预留 s: PasswordType,密码类型 s: Password,待校验密码 出参:无 |
| SetBiosLogEnabled | a{ss}y | i | 设置BIOS日志全打印开关 | 入参: a{ss}: 额外信息,预留 y: BiosLogPrintEnabled,0关闭,1开启 出参: i: 设置结果,0成功,-1失败 |
| SetBiosConfigActiveMode | a{ss}u | - | 设置BIOS配置导入的生效模式 | 入参: a{ss}: 额外信息,预留 u: Mode,0:导入待生效配置重启后生效,1:恢复默认再导入重启后生效 出参:无 |
属性参数说明
| 属性名 | 类型 | 描述 | 取值范围 |
|---|---|---|---|
| SystemStartupState | U8 | Bios启动状态 | 枚举值:0未启动, 32初始化ME完成, 64PCIe信息上报完成, 96SMBIOS write prepare, 99SMBIOS write start, 102SMBIOS write finish, 111进入PXE, 254Post完成 |
| Version | String | Bios版本信息 | readOnly |
| BackupVersion | String | Bios备份版本信息 | readOnly |
| CurrentValueFileName | String | 当前生效的配置文件 | readOnly |
| ResultFileName | String | 配置生效结果文件 | readOnly |
| SettingFileName | String | 待生效配置文件 | readOnly |
| RegistryFileName | String | 标准配置文件 | readOnly |
| BiosConfigActiveMode | U64 | BIOS配置导入的生效模式 | 0:导入待生效配置, 1:恢复默认再导入 |
| ResetBiosToDefaultsPending | Boolean | 恢复默认命令是否未生效 | true:存在(未生效),false:不存在(已生效) |
| UpgradeFailed | U8 | 正常升级后Flash完整性校验状态 | readOnly |
| RecoverFailed | U8 | 自恢复后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 2542.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 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SetBootMode | a{ss}s | i | 设置Bios启动模式 | 入参: a{ss}: 额外信息,预留 s: mode,启动模式(UEFI) 出参: i: RespCode,设置结果 |
| SetBootOrder | a{ss}s | iss | 设置Bios启动顺序 | 入参: a{ss}: 额外信息,预留 s: BootOrderJson,启动顺序JSON 出参: i: OutCode,返回码 s: ErrName,错误名 s: ErrValue,错误值 |
| SetStartOption | a{ss}s | i | 设置Bios启动项 | 入参: a{ss}: 额外信息,预留 s: StartOption,启动项(None/Pxe/Floppy/Cd/Hdd/BiosSetup) 出参: i: Result,设置结果 |
| SetStartOptionFlag | a{ss}s | i | 设置Bios启动项生效次数 | 入参: a{ss}: 额外信息,预留 s: StartOptionFlag,生效次数(Disabled/Once/Continuous) 出参: i: Result,设置结果 |
| ShieldIpmiModifyBootModeSupport | a{ss}b | i | 屏蔽是否可以通过ipmi设置启动模式 | 入参: a{ss}: 额外信息,预留 b: ModeSwitch,屏蔽开关 出参: i: RespCode,屏蔽结果 |
属性参数说明
| 属性名 | 类型 | 描述 | 取值范围 |
|---|---|---|---|
| BootSourceOverrideMode | String | 系统启动模式 | Legacy或UEFI,默认UEFI |
| BootSourceOverrideEnabled | String | 系统启动项生效次数 | Disabled/Once/Continuous,默认Disabled |
| BootSourceOverrideTarget | String | 系统启动项 | 默认HDD |
| BootOrder | String[] | 系统启动项启动顺序 | readOnly |
| BootModeSupport | Boolean | BIOS启动模式是否支持设置 | 默认true |
| BootModeIpmiSettable | Boolean | BIOS启动模式是否支持通过IPMI设置 | 默认true |
| BootOptionPolicy | U8 | 定制化启动项策略 | 0:不定制; 1:设置永久启动项联动修改启动顺序 |
| PreviousBootSourceOverrideTarget | String | 上次设置的永久启动项类型 | 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 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ImportCertificate | a{ss}sss | - | 导入Bios安全启动证书 | 入参: a{ss}: 额外信息,预留 s: DatabseType,数据库类型(db/dbx) s: CertString,证书内容 s: CertType,证书类型(PEM) 出参:无 |
| ResetCertificate | a{ss}ss | - | 重置Bios安全启动证书 | 入参: a{ss}: 额外信息,预留 s: DatabseType,数据库类型(db/dbx) s: ResetType,重置类型(DeleteAllKeys/ResetAllKeysToDefault) 出参:无 |
| GetCertificate | a{ss} | s | 获取Bios安全启动证书 | 入参: a{ss}: 额外信息,预留 出参: s: CertInfo,证书内容 |
属性参数说明
| 属性名 | 类型 | 描述 | 取值范围 |
|---|---|---|---|
| SystemId | U8 | 系统Id | readOnly |
| CertificateExpired | U8 | 证书过期标记 | 默认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 02.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 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ImportCertificate | a{ss}ss | - | 导入Bios的Https启动证书 | 入参: a{ss}: 额外信息,预留 s: CertString,Https证书内容 s: CertType,Https证书类型(PEM) 出参:无 |
| ImportCrl | a{ss}ss | - | 导入Bios的Https启动证书吊销列表 | 入参: a{ss}: 额外信息,预留 s: CertString,Https吊销证书内容 s: CertType,Https吊销证书类型(PEM) 出参:无 |
| ResetCertificate | a{ss}s | - | 重置Bios的Https启动证书 | 入参: a{ss}: 额外信息,预留 s: ResetType,重置类型(DeleteAllKeys/ResetAllKeysToDefault) 出参:无 |
| ResetCrl | a{ss}s | - | 重置Bios的Https启动证书吊销列表 | 入参: a{ss}: 额外信息,预留 s: ResetType,重置类型(DeleteAllKeys/ResetAllKeysToDefault) 出参:无 |
| GetCertificate | a{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.json | Bios运行的记录文件 |
| dump_info/AppDump/bios/silkconfig.json | 丝印配置文件 |
| dump_info/AppDump/bios/SMBIOS_CONF | SMBIOS配置信息 |
4.2 关键日志信息
| 日志片段 | 日志级别 | 含义解读 | 建议处理动作 |
|---|---|---|---|
| Switch spi to BMC(BIOS) | INFO | SPI链路切换到BMC侧 | 正常流程,无需处理 |
| Switch spi to BMC(BIOS) failed | ERROR | SPI链路切换失败 | 检查硬件连接和驱动 |
| verify signature error, code 88200312 | ERROR | 包签名校验失败 | 替换与BMC签名一致的HPM包 |
| sys-uid not in update.cfg's ProductUIDList | ERROR | HPM包与机型不符 | 使用符合机型的HPM包 |
| parse package failed, ret:InvalidFirmwarePackage | ERROR | HPM包缺少cfg文件 | 获取带外升级使用的HPM包 |
| [spi]check_device_ready: ready fail | ERROR | SPI设备未就绪 | 检查硬件问题,联系厂商 |
| PackageCheckExecutor: upgrade patch package in equipment mode | ERROR | 装备模式不能升级补丁包 | 更换为普通包或非装备模式 |
| ComponentFilter: skip component | INFO | 无感升级跳过版本一致的固件 | 正常流程,无需处理 |
5. 问题定界指南
5.1 典型问题定界
| 现象描述 | 是否为本组件问题 | 判断依据 | 关键证据收集方法 |
|---|---|---|---|
| BIOS升级显示无效的升级包 | 是 | 包签名校验失败或包类型不匹配 | 查看app.log中的签名错误日志 |
| BIOS升级成功后版本号未变 | 否 | 依赖BIOS上报版本号 | 确认BIOS在新版本上报过版本号 |
| 非装备包OS上电升级无法用reboot生效 | 是 | 默认下电生效模式 | 检查csr配置或使用ipmi命令设置 |
| BIOS升级完成后未保留配置 | 是 | 装备包默认全擦 | 检查是否为装备包,装备包默认不保留配置 |
| 无感升级失败 | 是 | 多种可能原因 | 检查BIOS启动状态、包类型、升级模式 |
5.2 错误码速查表
| 错误码 | 含义 | 可能原因 | 排查建议 |
|---|---|---|---|
| 0x03000049 | PSU.PSULinkAbnormal | 主板AVSBUS、PMBUS链路异常 | 更换CPU板 |
| 0x01000073 | Memory.MemoryI2CI3CLinkAbnormal | 1、内存故障 2、主板I2C/I3C链路异常 | 1、更换内存 2、更换主板 |
| 0x24000031 | CPUBoard.VRPowerRedundancyFailure | VR电源(单相)工作异常 | 更换主板 |
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
复现问题方法
- 确认升级包类型和升级模式匹配
- 确认BIOS启动状态(无感升级需要BIOS启动完成)
- 检查SPI链路状态
- 查看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.0 | 2025-01-16 | openUBMC | 初始版本创建 |