社区26年330_Q1构建的包会回退

问题描述

2512_LTS_Q1出的包起不来,可以升级上去,但是会回退。看log是说iam组件没起来。

环境信息

  • 软件版本:openUBMC_26年330版本

  • 硬件配置:机型为S920S20

manifest使用的是社区manifest仓br_release_openUBMC2512_20261231_LTS_SP1分支,按照2512出包指导修改了config.cfg和launch_control.json。
manifest.yml里修改了证书和如下配置:

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

openUBMC 2512_LTS_Q1 包启动失败并回退问题分析

根据您提供的日志与环境信息,该问题表现为:固件升级成功,但系统重启后无法正常启动,最终触发自动回退机制,返回至旧版本运行。核心原因为 iam 组件启动失败,导致 StartupCheck 多次校验未通过,从而引发 BMC rollback(BMC 回退)


:magnifying_glass_tilted_left: 问题现象总结

  • 升级操作:成功将 BMC 升级至 openUBMC_2512LTS_Q1 版本。
  • 启动问题:升级后系统未能正常启动,串口日志显示关键服务 iam 无法启动。
  • 核心日志
    [iam] StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.iam was not provided by any .service files
    
  • 最终结果:系统多次尝试启动失败后,触发 Auto Rollback 机制,自动回退到升级前版本。
  • 硬件平台:S920S20
  • 软件版本openUBMC_2512LTS_Q1
  • 构建配置manifest 使用 br_release_openUBMC2512_20261231_LTS_SP1 分支,并按指导修改了 config.cfglaunch_control.json

:puzzle_piece: 根本原因分析

1. iam 服务未注册导致 StartupCheck 失败

  • StartupCheck 是系统启动期间的核心校验机制,用于验证所有关键服务是否已正确加载。
  • 日志明确指出 bmc.kepler.iam 服务未被任何 .service 文件提供,说明:
    • iam 组件对应的 D-Bus 服务定义文件缺失或路径错误;
    • 或者 iam 组件未被正确集成进最终发布的 HPM 包中;
    • iam 服务未在系统启动流程中正确声明或启用。

:cross_mark: 报错说明:The name bmc.kepler.iam was not provided by any .service files 表明 systemd 或 D-Bus 框架无法找到该服务的 .service 配置文件

2. 启动检查失败 → 触发自动回退

  • StartupCheck 连续多次检测到 iam 异常(日志中达到 8 次),系统判断为“启动不完整”或“关键组件异常”。
  • 系统健康监控服务 bmc_health/service/main(由 bmc_core 启动)检测到异常后,标记系统不可用。
  • 最终触发 BMC Rollback,系统切回备用分区,恢复为旧版本。

:white_check_mark: 相关实体支持:

  • StartupCheck 失败 → Service Startup FailureBMC Rollback 的因果链已在知识图谱中确认。
  • 用户 Dengchangxiong 在文档中有明确说明:组件启动失败可导致重启和回退。

:brick: 可能原因归类

类别 详细说明
:wrench: 构建配置错误 - manifest.yml 配置中未正确包含 iam 组件;
- conan 包依赖缺失,如 conan: iam 未声明;
- config.cfglaunch_control.json 中未启用 iam 子系统。
:card_index_dividers: 服务文件缺失 - 构建过程中未生成或未打包 bmc.kepler.iam.service 文件;
- 文件路径不正确(应位于 /opt/bmc/apps/iam/service/ 下);
- 权限不足或构建阶段 permissions.ini 未正确赋权。
:package: 组件集成问题 - iam 组件被裁剪或未声明为必选组件;
- 组件构建失败,但未中断整个出包流程(CI 构建容忍错误);
- 使用了错误的出包指导(如非 LTS 专用流程)。
:locked_with_pen: 签名/安全机制问题 - 若为签名包,iam 组件因未正确签名导致加载失败;
- add pss root certificate failedrsa_decrypt failed 日志可能伴随出现(参考 firmware_mgmt FAQ)。

:white_check_mark: 解决方案建议

:white_check_mark: 步骤 1:确认 iam 是否包含在 HPM 包中

  • 解压 HPM 包,检查是否存在以下文件:
    /opt/bmc/apps/iam/service/main.lua
    /opt/bmc/apps/iam/service/bmc.kepler.iam.service
    
  • 确保 manifest.yml 中已声明:
    - conan: iam
    

:white_check_mark: 步骤 2:检查构建配置文件

  • 确认 build/product/BMC/openUBMC/rootfs/opt/bmc/apps/hica/subsys/energy/config.cfg 是否包含:
    config:include_app("iam")
    
  • 检查 launch_control.json 是否启用 iam
    {
      "apps": {
        "iam": { "enable": true }
      }
    }
    

:white_check_mark: 步骤 3:验证 .service 文件权限与路径

  • 构建完成后,确认目标系统中 /opt/bmc/apps/iam/service/ 目录存在且可读。
  • 检查 permissions.ini 是否为该组件设置了正确权限(如 root:root, 0755)。
  • 参考《构建制品定制化方案》确保“组件自申明、集成时赋权”策略已落实。

:white_check_mark: 步骤 4:查看完整日志(app.log, framework.log)

  • 检查是否有以下关键错误:
    • add pss root certificate failed
    • rsa_decrypt failed
    • Failed to load lua module: iam/service/main
  • 这些错误指向签名包验证失败模块加载失败

:white_check_mark: 步骤 5:使用标准出包指导

  • 参考《[2512签名包制作指导]》重新构建,确保每一步合规。
  • 使用正确分支构建镜像,避免混用非 LTS 配置。

:warning: 风险提示

  • 社区版 HPM 包默认不签名,若环境中要求强安全校验,需确保所有组件统一使用签名方案。
  • Release Version 存在版本回溯(Version Backtrack) 问题(知识库中提及),可能导致即便升级成功也无法持久化新版本。

:books: 参考资料

  1. 《升级常见问题指南》Q2:组件启动失败导致自动回退至原版本。
  2. 《firmware_mgmt》FAQrsa_decrypt failed 与签名包不匹配相关。
  3. CSR FirmwareComponentInfo 类:BMC 固件升级由 ComponentID=2 管理,支持防回退机制。
  4. 知识图谱实体链路
    • StartupCheckService Startup FailureBMC RollbackAuto Rollback
    • System UpgradeUpgrade FailureVersion Backtrack

:white_check_mark: 建议行动清单

任务 操作
:white_check_mark: 检查 HPM 包内容 确认 iam 组件文件存在
:white_check_mark: 审核 manifest.yml 添加 - conan: iam
:white_check_mark: 验证 config.cfg 包含 include_app("iam")
:white_check_mark: 查看 app.log 搜索 iam, serviceUnknown, decrypt 错误
:white_check_mark: 重新构建签名包 使用官方 2512 LTS 出包流程

如仍无法解决,建议提供完整的 app.logframework.log 进一步定位 iam 模块加载失败的上下文。

bmc_sdk使用的版本是26年Q1的,但是manifest用的是br_release_openUBMC2512_20261231_LTS_SP1分支的,对应的开源软件也是br_release_openUBMC2512_20261231_LTS_SP1里的版本。
基本是版本不配套导致的。

26年Q1的manifest是main分支么? 因为这个分支还在不停合入新的代码,我以为我们联合验证的应该是一个锁定的分支

我是用Q1的sdk和Q1的manifest也是会回退,framework.log中也同样报iam服务,BMC串口里面报了tpcm的配置错误

在subsys中手动改成如下版本号即可:account/1.110.31 + iam/1.110.4

1 个赞

可以了