升级到openUBMC后怎么再回退到出厂的IBMC版本

问题描述

升级到openUBMC后怎么再回退到出厂的IBMC版本,WEB和命令烧之前ibmc升级到openubmc的过渡包都提示烧录失败

环境信息

  • 软件版本:[如 OpenUBMC2603]

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

升级到openUBMC后如何回退到出厂的iBMC版本

根据您提供的信息,您已经将系统从iBMC升级到了openUBMC 26.03版本,现在希望回退到原始的iBMC固件版本,但遇到了WEB界面和命令行烧录过渡包均提示失败的问题。

回退iBMC版本的可行方法

主要解决方案:使用官方指导的过渡包方法

尽管您提到烧录过渡包失败,但这是最标准的回退途径。请确保严格按照以下步骤操作:

  1. 获取正确的过渡包

    • 拉取 openUBMC/manifest 仓库代码并进入 manifest 目录
    • 获取真实的 datatocheck_upgrade.datpme_profile_en.dat 文件,覆盖 build/manufacture/misc 目录下的同名文件(需要联系PAE获取)
    • 获取原始的根证书文件,重命名为 rootca.der,覆盖 build/product/ca 目录下的同名文件
    • 在 manifest 目录执行 bingo build
    • 输出目录中的 rootfs_openUBMC.hpm 包即为所需过渡包
  2. 构建时关键配置

    • 确保在 manifest.yml 文件中已设置:
    account:
      option:
        manufacture: true
    

备选方案:通过U-Boot进行分区倒换

如果常规升级方式失败,可以尝试通过U-Boot命令行进行操作:

  1. 进入U-Boot命令行

    • 在系统启动时通过串口连接,在倒计时期间按任意键中断启动过程
    • 进入U-Boot命令行界面
  2. 执行分区倒换操作

    • 在U-Boot环境下执行相关的IMU命令进行主备分区倒换(具体命令属于产品敏感信息,建议私信项目支持获取)

注意:IMU命令属于产品专有信息,不建议在公开论坛讨论,建议直接联系项目技术支持获取具体操作步骤。

常见问题及原因分析

为什么会出现回退失败?

  • 自动回滚机制触发:当新系统启动失败时,BMC会自动切换回备份分区,但如果该分区已被覆盖,则无法正常回退
  • 构建包仍携带iBMC标识:早期的openUBMC构建脚本可能沿用iBMC的模板,导致输出镜像包含iBMC标识,造成识别混乱
  • 分区命名问题:即使刷入openUBMC镜像,若"Active"分区仍被标记为"iBMC",则启动后仍会显示iBMC信息

为什么过渡包烧录失败?

  • 签名验证问题:升级包的签名校验不通过
  • 配置未正确设置:构建时未启用 manufacture: true 选项
  • 网络或文件传输问题:上传过程中文件损坏或不完整

预防措施建议

  1. 首次升级前的准备

    • 在升级前记录原始iBMC版本信息作为备份
    • 建议先在测试环境中验证整个流程
  2. 构建纯净openUBMC包

    • 确保完全剥离iBMC品牌信息
    • 使用符合OpenUBMC标准的版本命名规范
  3. 临时禁用自动回滚

    • 升级前关闭失败自动回退功能,避免一次启动失败即切回旧版本

技术支持渠道

  • 联系PAE(产品支持工程师)获取专用刷机包
  • 访问OpenUBMC社区论坛:https://discuss.openubmc.cn
  • 参考官方文档《BMC 3.xx.xx.xx版本升级openubmc指导》

重要提示:由于涉及底层系统操作,建议在执行任何回退操作前完全理解其风险,并尽可能在有技术支持的情况下进行。

烧录失败具体报错是什么呢

app.zip (251.1 KB)

这是日志文件

2000-01-01 00:36:41.190012 firmware_mgmt NOTICE: file_transfer.lua(169): start to move file [temp_upgrade_file.hpm] from tmp to shm
2000-01-01 00:36:43.098908 firmware_mgmt NOTICE: file_transfer.lua(174): move_file_s ok:true, err:0
2000-01-01 00:36:43.522571 firmware_mgmt WARNING: init.lua(97): nil:337 > validate_sign.lua:-1 > validate_sign.lua:197: An error occurred during the firmware upgrade process. Details: verify signature error, code 88200004
2000-01-01 00:36:43.523791 firmware_mgmt ERROR: validate_sign.lua(339): FirmwareUpgradeError: An error occurred during the firmware upgrade process. Details: verify signature error, code 88200004
2000-01-01 00:36:43.525247 firmware_mgmt ERROR: task_instance.lua(233): parse package(rootfs_TaiShan200_2280v2.hpm) failed, ret:InvalidFirmwarePackage.
出现我不能回退的节点是我导入了自制的SSL证书,之前没有导入证书,在telnet下通过ipmcset可以烧过渡包

你这是验证签名不通过。 可以在论坛全局搜索 88200004, 查看相关的帖子。

比如:

1 个赞

我之前升级的流程是IBMC->有签名的过渡包->无签名的opeubmc,升级成功了。
现在是想无签名的openubmc->有签名的openubmc,
按给的帖子添加了```
[hpm_encrypt]
enable=true

烧录后报错,
2000-01-01 01:21:11.320425 certificate ERROR: certificate_parser.lua(265): The certificate start time is greater than the current time
2000-01-01 01:21:11.322531 event NOTICE: event_management.lua(1052): add_software_event is called by bmc.kepler.certificate
2000-01-01 01:21:29.023506 iam ERROR: init.lua(97): nil:-1 > model.lua:1590 > session_service.lua:877: The session has timed out, please log in again.
2000-01-01 01:21:29.569148 iam ERROR: init.lua(97): nil:-1 > model.lua:1599 > session_service.lua:877: The session has timed out, please log in again.
2000-01-01 01:21:34.638617 firmware_mgmt ERROR: task_id_mgmt.lua(311): sub upgrade task id are empty.
2000-01-01 01:21:34.650056 firmware_mgmt ERROR: task_id_mgmt.lua(311): sub upgrade task id are empty.
2000-01-01 01:21:41.076737 web_backend NOTICE: init.lua(98): upload content length:number 83527364, remaining capacity space:number 133701632
2000-01-01 01:21:48.921616 firmware_mgmt NOTICE: active_fructl.lua(96): get host type is Singlehost
2000-01-01 01:21:48.923237 firmware_mgmt NOTICE: utils.lua(34): The file path is Local.
2000-01-01 01:21:48.926600 firmware_mgmt NOTICE: init.lua(81): Upgrading_Flag is true
2000-01-01 01:21:48.942513 firmware_mgmt NOTICE: init.lua(41): update status to FS_SIMPLE_UPGRADING.
2000-01-01 01:21:48.958817 firmware_mgmt NOTICE: task_mgmt.lua(312): Create task[Id: 1065986048, StartTime: 2000-01-01T01:21:48+00:00, Progress: 0, State: New] successfully
2000-01-01 01:21:48.959962 firmware_mgmt NOTICE: task_service.lua(55): task create success, task id: 1065986048
2000-01-01 01:21:48.961103 firmware_mgmt NOTICE: task_id_mgmt.lua(30): add serial task id(1065986048) successfully
2000-01-01 01:21:48.963244 firmware_mgmt NOTICE: tasks_scheduling.lua(196): start tasks processor
2000-01-01 01:21:50.256963 firmware_mgmt NOTICE: task_mgmt.lua(443): Update task[Id: 1065986048, StartTime: 2000-01-01T01:21:48+00:00, Progress: 0, State: Running] successfully
2000-01-01 01:21:50.257629 firmware_mgmt NOTICE: file_transfer.lua(169): start to move file [temp_upgrade_file.hpm] from tmp to shm
2000-01-01 01:21:52.162273 firmware_mgmt NOTICE: file_transfer.lua(174): move_file_s ok:true, err:0
2000-01-01 01:21:52.590525 firmware_mgmt NOTICE: validate_sign.lua(268): get platform is community
2000-01-01 01:21:52.591710 firmware_mgmt NOTICE: action.lua(66): Validate signature successfully
2000-01-01 01:21:52.593290 firmware_mgmt NOTICE: hpm_package.lua(811): ManufacturerValidateEnabled is false, there is no need to validate manufacture_id.
2000-01-01 01:21:52.598579 firmware_mgmt ERROR: utils.lua(203): secure_tar_unzip failed: -3003
2000-01-01 01:21:52.600532 firmware_mgmt ERROR: task_instance.lua(233): parse package(rootfs_openUBMC.hpm) failed, ret:./opt/bmc/libmc/lualib/mc/utils.lua:1204: cannot open v2 persistence file.

无签名的社区包要回到之前的版本有2种方法

  1. 烧片
  2. 制作无签名的反向过渡包(咨询项目支撑人员),升级过渡包,之后再升级之前的版本。