问题描述
构建社区26年330+高可用版本,构建成功,上机验证会回退
![]()
framework.txt (2.0 MB)
已经按照 社区26年330_Q1构建的包会回退 - 交流互助区 - openUBMC 论坛 这个帖子进行修改,但仍然有上机升级就回退问题,请教下如何解决?
构建社区26年330+高可用版本,构建成功,上机验证会回退
![]()
framework.txt (2.0 MB)
已经按照 社区26年330_Q1构建的包会回退 - 交流互助区 - openUBMC 论坛 这个帖子进行修改,但仍然有上机升级就回退问题,请教下如何解决?
答案内容由AI生成,仅供参考:
总结与建议
| 项目 | 建议 |
|---|---|
| 根本原因 | 关键服务 iam/rmcpd 未启动 → 触发强制重启 → 多次失败 → 自动回退 |
| 首要解决措施 | 清理 manifest 中的白牌配置 |
| 次要排查项 | 确保关键服务被打包、依赖完整、可启动 |
| 版本控制 | 检查 RevisionNumber,避免防回退策略误触发 |
| 升级方式 | 使用冷升级(AC 断电重启) |
| 推荐流程 | 构建 → 清理配置 → 冷升级 → 手动验证服务状态 → 持续监控 |
根据您的描述,您在构建并部署社区 330+高可用版本 时,尽管构建成功,但在上机验证过程中系统多次重启并发生版本回退。该问题表现为升级看似成功,但最终系统自动切换回旧版本。结合您提供的日志信息、问题场景以及知识库中的相关信息,本文将从问题现象、根本原因、排查思路和解决方案四个方面进行系统性分析。
manifest 构建 openUBMC 2603(即26年330_Q1)版本成功。[iam]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.iam was not provided by any .ser
[rmcpd]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.rmcpd was not provided by any .ser
Force Reset begin
force reset bmc successfully
1970-01-01,表明系统未正常启动或 RTC 初始化失败。从日志中可见,iam 和 rmcpd 两个核心服务无法启动,报错为 DBus 服务未注册(ServiceUnknown)。这两个服务分别为:
iam(Identity and Access Manager):负责用户认证、权限管理。rmcpd(RMCP Daemon):处理 IPMI RMCP 协议通信,是带外管理的基础。
结论:
上述关键服务未能在系统启动时正常加载,导致 BMC 健康检查失败,触发init.lua中的 Force Reset BMC 机制,并最终因连续启动失败而激活分区回退逻辑。
参考知识库文档《升级常见问题指南》中的说明:
“升级实际上是成功的,升级成功后复位iBMC,iBMC系统启动失败,三次未启动成功之后触发分区切换,切回了原版本。”
该场景与您当前现象完全一致:
根据已有文档(参考 Document Chunk 3)指出:
“请在
manifest中删除白牌配置。”
如果构建包中存在未清理的白牌自定义配置(如 web_custom.xml 中的 CustomManufacturer 等),可能导致部分服务无法正确加载或路由异常,尤其影响 iam、dbus 服务的注册。
此外,社区版本通常要求使用纯净配置,残留的品牌化配置可能造成兼容性问题。
根据 CSR 配置字典(FirmwareComponentInfo 类)定义,BMC 存在防回退控制策略:
| 参数 | 说明 |
|---|---|
RevisionNumber |
控制是否允许降级 |
RevisionNumber > 0 |
只能升级不能降级 |
RevisionNumber = 0 |
无限制,可自由切换 |
若新旧版本之间 RevisionNumber 设置不当,或未设置为 0,也可能导致升级后系统误判为非法状态而强制回退。
依据:
Document Chunk 3提示必须在manifest中删除白牌配置。
操作步骤:
manifest 中是否引入了 wbd_up_file 或 web_custom.xml 文件。<CUSTOM_CONFIG>
<CustomManufacturer VALUE="openUBMC" />
<CustomAlarmName VALUE="openUBMC" />
<CustomLogIbmaName VALUE="BMA" />
<CustomLogIbmcName VALUE="openUBMC" />
</CUSTOM_CONFIG>
原因:白牌配置中的字段可能覆盖系统默认服务名、DBus 接口名等,导致
bmc.kepler.iam无法注册。
iam 和 rmcpd 服务是否被打包入固件虽然构建成功,但仍需确认以下两点:
iam 和 rmcpd 是否被正确编译进系统?
/usr/bin/iam/usr/bin/rmcpdsystemd 是否有对应服务文件:
/etc/systemd/system/iam.service/etc/systemd/system/rmcpd.service服务是否被禁用或依赖缺失?
libdbus, libopenssl 等)。若需验证是否因防回退策略导致自动切区:
FirmwareComponentInfo 中对应组件的 RevisionNumber 为 0:{
"ComponentID": "BMC",
"RevisionNumber": 0
}
若关闭后不再回退,则说明原版本存在版本号校验冲突或升级策略限制。
在 init.lua 中,可对 StartupCheck 增加更详细的日志输出,例如:
for _, svc in ipairs(abnormal_svcs) do
log("ERROR", "Service " .. svc .. " failed to start. Checking status...")
local status = os.execute("systemctl status " .. svc)
end
并在目标设备上手动执行:
systemctl status iam
systemctl status rmcpd
journalctl -u iam -f
以获取更详细的失败原因。
参考知识库中 Cold Upgrade 概念:
升级后必须进行 AC 断电重启(AC Power Cycle),否则部分配置不生效。
请确保:
ipmitool mc reset cold,应进行物理断电。若问题频繁发生,可启用快速回退处理过程(快速回退处理过程):
这也是“升级不中断业务”的重要组成部分。
| 项目 | 建议 |
|---|---|
| 根本原因 | 关键服务 iam/rmcpd 未启动 → 触发强制重启 → 多次失败 → 自动回退 |
| 首要解决措施 | 清理 manifest 中的白牌配置 |
| 次要排查项 | 确保关键服务被打包、依赖完整、可启动 |
| 版本控制 | 检查 RevisionNumber,避免防回退策略误触发 |
| 升级方式 | 使用冷升级(AC 断电重启) |
| 推荐流程 | 构建 → 清理配置 → 冷升级 → 手动验证服务状态 → 持续监控 |
Document Chunk 1:社区构建包回退问题日志对比Document Chunk 3:manifest 中需删除白牌配置Document Chunk 4:升级成功但版本号不变 → 实际为系统启动失败后回退Knowledge Graph: Release Version, Version Backtrack, 回退机制, 升级不中断业务CSR配置字典:FirmwareComponentInfo 防回退机制解析如上述方案仍无法解决,请提供以下信息进一步排查:
manifest 提交哈希web_custom.xmliam 和 rmcpd 服务是否存在于根文件系统journalctl 完整启动日志(尤其是 dbus 相关)祝您问题早日解决!
在 manifest 目录本地构建目录temp/board_xxx/manifest.yml (其中xxx为实际构建的单板名), 查看下最终构建的account和iam组件版本。
检查了manifest.xml,发现没有配置conan: account,现在新增配置了account组件
查看temp/board_xxx/manifest.yml 里
是这样
conan: iam/1.110.4@openubmc/stable
conan: account/1.110.31@openubmc/stable
重新上机升级330版本包,现在可以升级成功,没有出现回退。
好的