bios全擦升级接口

基于2509版本openubmc构建
我们从bios了解到,当前通过web升级bios,无法实现完全擦写升级,有部分功能区域未擦除更新。

下面的装备升级应该是可以全擦升级的:


但是不知道这个装备升级接口应该如何使用? 希望可以提供指导

答案内容由AI生成,仅供参考:

BIOS 全擦升级(装备升级)接口使用指导(基于 openUBMC 25.09 版本)

根据您提供的信息和分析 openUBMC 25.09 版本的相关上下文,您已正确识别出问题的核心:标准的 Web BIOS 升级通常不是全擦写升级,而装备升级(Equipment Upgrade) 模式正是实现 全擦升级(全擦写) 的正确方法。

下文将为您提供在基于 openUBMC 25.09 构建的系统上,如何使用装备升级接口实现 BIOS 全擦升级的详细指导。


:magnifying_glass_tilted_left: 1. 核心概念解析

:white_check_mark: 全擦升级(全擦写升级)

  • 定义全擦升级 是一种固件更新过程,它会彻底擦除Bios Flash 中的全部现有数据和配置,然后写入全新的固件。
  • 目的:确保新固件在绝对“干净”的环境中运行,避免因旧版本残留数据(如未被更新的配置区、NVRAM 区域等)导致的兼容性、功能异常或潜在 bug,这是解决您遇到问题的根本方法。

:white_check_mark: 装备升级(Equipment Upgrade)

  • 定义:这是实现 全擦升级 的特定升级模式。它通过执行一个强制的完整系统断电上电(Power Cycle) 来确保升级包被完整刷入整个 Flash。
  • 关键动作(根据您提供的知识):
    • 强制下电:强制关闭操作系统和主机电源。
    • 刷 BIOS Flash:在主机完全断电的情况下,通过 SPI 等物理通道将新固件完整地刷写到 BIOS Flash 芯片中。
    • 上电:固件写入成功后,重新给主机上电并启动。
  • 与“非装备升级”的区别
    • 非装备升级(普通升级)通常在主机运行时进行,更新包可能被缓存,待下一次关机时才生效,不保证全区域擦写

:hammer_and_wrench: 2. 如何使用“装备升级”接口进行全擦升级

根据知识库内容及 openUBMC 的典型架构,装备升级通常是通过 Redfish 或 IPMI 接口配合特定的“装备包”来触发的,而不是简单的 Web 页面上传。

:gear: 前置条件

  1. 系统版本:确认系统运行的是 openUBMC 25.09 或兼容其装备升级特性的版本。
  2. 升级包类型:您需要一个装备包(Equipment Package)。这种包通常包含一个 manufacture 文件夹,并可能在 update.cfg 中有特殊标识(与普通升级包或补丁包不同)。标准的 HPM 格式 BIOS 更新包通常不足以触发装备升级流程。
  3. 接口方式:推荐使用 RedfishIPMI 命令行,这提供了比 Web 页面更底层和更精确的控制。

:inbox_tray: 方法一:通过 Redfish 接口触发(推荐)

这是最标准的服务器管理接口。

  1. 准备升级包:将您的 BIOS 装备包(例如 .hpm 文件)上传至 BMC 的临时目录(如 /tmp)。

  2. 发起 SimpleUpdate 请求
    向 Redfish 的 UpdateService 发送 SimpleUpdate 动作。要触发射装备升级的强制上下电动作,必须不携带 BiosActivatedScope 参数(该参数用于无感升级)。

    请求示例

    POST /redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate
    Content-Type: application/json
    
    {
        "ImageURI": "/tmp/bios_equipment_package.hpm",
        "TransferProtocol": "Vendor"
    }
    
    • 关键点:不包含 BiosActivatedScope。根据知识库逻辑,触发强制下电的条件是“装备升级”,而装备升级的关键特征是打包了manufacture文件夹。因此,上传一个真正的装备包 并发起此请求,系统应能识别并执行全擦流程。
  3. 监控升级状态:升级过程将自动执行强制断电和上电,耗时可能较长。可以通过 Redfish 或 Web 界面监控 TaskService 任务的状态。


:desktop_computer: 方法二:通过 Web 界面(需特定包)

理论上,如果您上传的 HPM 包是专门构建的“装备包”(包含 manufacture 文件夹),Web 界面的升级功能有可能自动识别并进入装备升级流程。

  • 操作:将装备包上传到 Web 界面的固件升级页面。
  • 注意:此方法的成功与否高度依赖于 Web 界面实现和后端逻辑对升级包的识别能力。这是风险最高的方法,因为它可能无法明确区分普通包和装备包。如果 Web 升级仍然不执行全擦,说明其未正确识别为装备升级,应优先使用 Redfish 方法。

:pushpin: 3. 重要注意事项

  1. 全擦升级 的后果

    • 所有 BIOS 配置将丢失,系统会恢复到默认的出厂设置(如启动顺序)。
    • 升级前必须备份所有关键的 BIOS 配置(如果支持),并在升级后重新配置。
  2. 服务中断

    • 装备升级需要强制断电,服务将中断。请在维护窗口执行。
  3. 验证装备包

    • 确保您使用的固件包确实是“装备包”。需要与构建团队或文档确认符合 openUBMC 对于“装备包”的具体要求。
  4. 知识库中的证据

    • 知识图谱关系 {"entity1": "BIOS", "entity2": "全擦升级", "description": "BIOS upgrade in BMC-equipped systems defaults to full erase..."} 直接支持此流程。
    • 文档 [ID: 1, 3] 详细描述了“装备升级”模式及其“强制下电”特性。

:white_check_mark: 总结

要实现基于 openUBMC 25.09 的 BIOS 全擦升级,正确的路径是使用 装备升级(Equipment Upgrade) 模式,而不是普通的 Web 升级。

最佳实践

  1. 准备一个真正的 “装备包”
  2. 通过 Redfish SimpleUpdate 接口发送升级请求。
  3. 保证系统在升级期间可以安全地强制断电和重启

这样,系统将执行您所期望的“强制下电 → 全区域刷写 BIOS Flash → 上电”的全擦流程,确保固件的干净和完整。

相关链接:

  1. 【性能规格】申请社区提供BMC相关的性能规格的值
  2. bios升级失败问题求助
  3. BMC固件升级失败
  4. 2509版本如何启用java kvm
  5. bios | 文档中心 | openUBMC

包含manufacture的装备包怎么出呢?
即使非装备的BMC,也有接口可以进行全擦升级,比如ipmcset -t maintenance -d upgradebios -v /tmp/bios.hpm。但是该接口无法在OS下使用,请问redfish/ipmi有没有等同于ipmcset -t maintenance -d upgradebios 的接口?

经过测试验证,在bios下设置manufacture: true即是开启该组件的装备功能:
image

这样出的BMC包,在web上升级默认就是全擦装备升级,升级时会强制下电。

1 个赞

该配置得放在装备包配置下,不然正常上网包也进行全擦升级

是的 最好是在manifest下配置一个manufacture项来专门用来出装备包

是有装备包配置的,在manufacture下

1 个赞

目前没有支持现网包的ipmi和redfish接口执行全擦升级