OpenUBMC升级失败

问题描述

OpenUBMC升级失败日志如下

1970-01-01 03:15:05.301937 [:00000014] om: LAUNCH snlua account/service/main
1970-01-01 03:15:05.500461 framework SUBSCRIBE NOTICE: harbor.lua(421): dbus service [bmc.kepler.remote_console] online, → :1.90
1970-01-01 03:15:06.105051 [:00000015] om: LAUNCH snlua vnc_proxy/service/main
1970-01-01 03:15:07.820535 framework SUBSCRIBE NOTICE: harbor.lua(421): dbus service [bmc.kepler.event_policy] online, → :1.94
1970-01-01 03:15:08.198479 framework SUBSCRIBE NOTICE: harbor.lua(421): dbus service [bmc.kepler.product_mgmt] online, → :1.96
1970-01-01 03:15:11.164190 persistence NOTICE: persistence_db_intf.lua(331): finish persist save for table: t_fw_inventory_objs, persist_type: protect_temporary, op_type: insert, data_size: 1464, key: Id:Bios
1970-01-01 03:15:12.063972 persistence NOTICE: persistence_db_intf.lua(331): finish persist save for table: t_fw_inventory_objs, persist_type: protect_temporary, op_type: insert, data_size: 1427, key: Id:TeeOS
1970-01-01 03:15:12.106799 persistence NOTICE: persistence_db_intf.lua(331): finish persist save for table: t_fw_inventory_objs, persist_type: protect_temporary, op_type: insert, data_size: 1420, key: Id:Cca
1970-01-01 03:15:13.530405 [:00000016] om: LAUNCH snlua remote_console/service/console_agent
1970-01-01 03:15:14.327449 persistence NOTICE: persistence_db_intf.lua(331): finish persist save for table: t_fw_inventory_objs, persist_type: protect_temporary, op_type: insert, data_size: 1471, key: Id:SR_EXU_0101
1970-01-01 03:15:14.443983 persistence NOTICE: persistence_db_intf.lua(331): finish persist save for table: t_fw_inventory_objs, persist_type: protect_temporary, op_type: insert, data_size: 1458, key: Id:SR_PSR_01010A
1970-01-01 03:15:15.095530 persistence NOTICE: persistence_db_intf.lua(331): finish persist save for table: t_fw_inventory_objs, persist_type: protect_temporary, op_type: insert, data_size: 1473, key: Id:SR_BCU_010101
1970-01-01 03:15:17.258870 [:00000002] interface: LAUNCH snlua bootstrap
1970-01-01 03:15:17.250507 maca ERROR: init.lua(184): [dcmid]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.dcmid was not provided by any .service files, check count: 1
1970-01-01 03:15:17.394437 maca ERROR: init.lua(184): [ddns]StartupCheck failed, error: org.freedesktop.DBus.Error.UnknownObject: Unknown object path /bmc/kepler/ddns/MicroComponent, check count: 1
1970-01-01 03:15:17.500549 [:00000003] interface: LAUNCH snlua launcher
1970-01-01 03:15:17.550777 soctrl NOTICE: base_scene0.lua(119): connect_compound_keyboard_mouse_device : usb_id=0, fn_cnt=2, fn_list:0x1 0x142 fn_id:0 1
1970-01-01 03:15:17.585577 [:00000004] interface: LAUNCH snlua cdummy
1970-01-01 03:15:17.694558 [:00000005] interface: LAUNCH harbor 0 4
1970-01-01 03:15:17.710688 [:00000006] interface: LAUNCH snlua datacenterd
1970-01-01 03:15:17.767537 [:00000017] om: LAUNCH snlua remote_console/service/vmm_agent
1970-01-01 03:15:17.850566 [:00000007] interface: LAUNCH snlua service_mgr
1970-01-01 03:15:17.954523 [:00000008] interface: LAUNCH snlua hica/subsys/interface/service/main
1970-01-01 03:15:18.040947 [:00000009] interface: LAUNCH snlua sd_bus
1970-01-01 03:15:18.502639 [:00000018] om: LAUNCH snlua remote_console/service/vmm_core
1970-01-01 03:15:19.067054 [:0000000a] interface: LAUNCH snlua harbor
1970-01-01 03:15:19.306333 [:00000002] interface: KILL self
1970-01-01 03:15:19.307524 [:0000000b] interface: LAUNCH snlua hica/subsys/interface/service/redfish
1970-01-01 03:15:19.308766 [:0000000c] interface: LAUNCH snlua hica/subsys/interface/service/web_backend
1970-01-01 03:15:19.315979 [:0000000d] interface: LAUNCH snlua dcmid/service/main
1970-01-01 03:15:19.449169 [:00000019] om: LAUNCH snlua remote_console/service/vmm_client
1970-01-01 03:15:19.512212 [:0000000e] interface: LAUNCH snlua redfish/service/portal_agent
1970-01-01 03:15:19.514546 [:0000000f] interface: LAUNCH snlua web_backend/service/portal_agent
1970-01-01 03:15:19.971932 maca ERROR: init.lua(184): [redfish]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.redfish was not provided by any .service files, check count: 1
1970-01-01 03:15:20.543967 [:0000001a] om: LAUNCH snlua remote_console/service/videoplay_agent
1970-01-01 03:15:21.272486 maca ERROR: init.lua(184): [web_backend]StartupCheck failed, error: org.freedesktop.DBus.Error.UnknownObject: Unknown object path /bmc/kepler/web_backend/MicroComponent, check count: 1
1970-01-01 03:15:21.896582 persistence NOTICE: persistence_db_intf.lua(331): finish persist save for table: t_fw_inventory_objs, persist_type: protect_temporary, op_type: insert, data_size: 1539, key: Id:BCU_CPLD_010101
1970-01-01 03:15:22.075740 persistence NOTICE: persistence_permanent_intf.lua(166): persist permanent save successfully, tname:t_account_backup, length:224
1970-01-01 03:15:22.699701 [:00000010] interface: LAUNCH snlua route_mapper/worker_service/main
1970-01-01 03:15:23.146071 [:00000012] interface: LAUNCH snlua route_mapper/worker_service/main
1970-01-01 03:15:36.372468 maca NOTICE: init.lua(235): check startup status completely, total components count: 50, normal count: 50
1970-01-01 03:15:36.469074 maca NOTICE: init.lua(56): notify security core that bmc has successfully started, uptime: 108s
1970-01-01 03:15:36.536240 maca NOTICE: scm3.lua(33): notify m3 book ok
1970-01-01 03:15:36.537244 maca NOTICE: scm3.lua(44): Secure Bootloader/FW boot from active partition
1970-01-01 03:15:36.537612 maca NOTICE: scm3.lua(44): BMC Uboot boot from active partition
1970-01-01 03:15:36.537925 maca NOTICE: scm3.lua(44): BMC Rootfs boot from active partition
1970-01-01 03:15:36.538264 maca NOTICE: scm3.lua(68): booted from secure mode successfully
1970-01-01 03:16:05.853628 hwproxy NOTICE: init.lua(138): [pcie_device_plugins] ctor
1970-01-01 03:16:57.236766 persistence NOTICE: persistence_db_intf.lua(331): finish persist save for table: t_fw_inventory_objs, persist_type: protect_temporary, op_type: insert, data_size: 1540, key: Id:EXU_CPLD_0101
1970-01-01 03:19:12.380652 [:00000035] framework: LAUNCH snlua debug_console 127.0.0.1 40010
1970-01-01 03:19:12.483624 [:00000035] framework: Start debug console at 127.0.0.1:40010
1970-01-01 03:19:12.878171 key_mgmt NOTICE: start_profiling.lua(199): profiling finished, start time:1970-01-01 00:00:23, duration:5 min, sent signals:0, received signals:0, sent rpcs:4, received rpcs:31
1970-01-01 03:19:12.979482 persistence NOTICE: start_profiling.lua(199): profiling finished, start time:1970-01-01 00:00:23, duration:5 min, sent signals:5, received signals:0, sent rpcs:0, received rpcs:316
1970-01-01 03:19:12.999980 maca NOTICE: start_profiling.lua(199): profiling finished, start time:1970-01-01 00:00:23, duration:5 min, sent signals:3, received signals:488, sent rpcs:81, received rpcs:1019
1970-01-01 03:19:13.102842 soctrl NOTICE: start_profiling.lua(199): profiling finished, start time:1970-01-01 00:00:24, duration:5 min, sent signals:0, received signals:14, sent rpcs:5, received rpcs:26
1970-01-01 03:19:13.185000 hwdiscovery NOTICE: start_profiling.lua(199): profiling finished, start time:1970-01-01 00:00:24, duration:5 min, sent signals:14, received signals:50, sent rpcs:8, received rpcs:137
1970-01-01 03:19:13.204635 hwproxy NOTICE: start_profiling.lua(199): profiling finished, start time:1970-01-01 00:00:24, duration:5 min, sent signals:32, received signals:42, sent rpcs:14, received rpcs:1693
1970-01-01 03:19:42.314185 [:0000000f] security: LAUNCH snlua debug_console 127.0.0.1 40021
1970-01-01 03:19:42.360990 [:0000000f] security: Start debug console at 127.0.0.1:40021
1970-01-01 03:19:42.605059 [:0000000e] ras: LAUNCH snlua debug_console 127.0.0.1 40033
1970-01-01 03:19:42.644767 [:0000000e] ras: Start debug console at 127.0.0.1:40033
1970-01-01 03:19:42.686825 [:0000000f] alarm: LAUNCH snlua debug_console 127.0.0.1 40023
1970-01-01 03:19:42.735650 [:0000000f] alarm: Start debug console at 127.0.0.1:40023
1970-01-01 03:19:49.859908 [:0000000d] energy: LAUNCH snlua debug_console 127.0.0.1 40032
1970-01-01 03:19:49.904573 [:0000000d] energy: Start debug console at 127.0.0.1:40032
1970-01-01 03:19:50.483562 [:00000015] hardware: LAUNCH snlua debug_console 127.0.0.1 40030
1970-01-01 03:19:50.526226 [:00000015] hardware: Start debug console at 127.0.0.1:40030
1970-01-01 03:19:52.897563 [:0000000f] om_priv: LAUNCH snlua debug_console 127.0.0.1 40031
1970-01-01 03:19:52.940625 [:0000000f] om_priv: Start debug console at 127.0.0.1:40031
1970-01-01 03:20:02.341780 [:0000001a] bmc_core: LAUNCH snlua debug_console 127.0.0.1 40020
1970-01-01 03:20:02.391722 [:0000001a] bmc_core: Start debug console at 127.0.0.1:40020
1970-01-01 03:20:03.782686 [:0000001b] om: LAUNCH snlua debug_console 127.0.0.1 40035
1970-01-01 03:20:03.833253 [:0000001b] om: Start debug console at 127.0.0.1:40035
1970-01-01 03:20:19.344180 [:00000013] interface: LAUNCH snlua debug_console 127.0.0.1 40040
1970-01-01 03:20:19.412651 [:00000013] interface: Start debug console at 127.0.0.1:40040
1970-01-01 03:20:28.207409 maca NOTICE: base.lua(395): monitor component ddns added, service: bmc.kepler.ddns [repeated 13 times in 20s from 1970-01-01 03:15:02.640307 to 1970-01-01 03:15:22.298063][flush]

新编译的固件升级后,回退到之前的版本。感觉像是有组件没有启动,帮忙分析下。

环境信息

  • 操作系统:Ubuntu 24.04

  • 软件版本:OpenUBMC2512

  • 硬件配置:

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

[您希望实现什么]

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

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

:receipt: 总结

项目 内容
问题本质 固件升级后因关键服务(如Redfish、Web Backend)未及时启动,触发系统自动回滚机制,导致“升级成功但回退旧版”现象。
根本原因 构建配置不当导致服务缺失,或签名、依赖管理混乱引发运行时异常。
核心解决路径 :white_check_mark: 检查manifest配置
:white_check_mark: 验证服务文件存在性
:white_check_mark: 启用manufacture模式
:white_check_mark: 禁用自动回滚临时调试
:white_check_mark: 执行清根操作
推荐行动顺序 1. 重新构建包含完整组件的固件包
2. 升级前执行 clearcfg
3. 禁用自动回滚
4. 升级并观察串口日志
5. 确认无误后再启用自动回滚
点击此处查看详细分析解答

OpenUBMC升级后回退至旧版本问题分析与解决方案

根据您提供的日志信息和问题描述,系统在升级新编译的OpenUBMC固件后出现回退到旧版本的现象。以下将结合日志、知识库内容及行业实践经验,进行全面分析并给出解决方案。


:magnifying_glass_tilted_left: 问题概述

  • 现象:新固件升级完成后,BMC启动过程中部分组件未能正常初始化,最终系统自动回退至升级前的旧版本。
  • 关键日志线索
    • 多个核心服务启动检查失败:
      maca ERROR: init.lua(184): [dcmid]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.dcmid was not provided by any .service files
      maca ERROR: init.lua(184): [redfish]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.redfish was not provided by any .service files
      maca ERROR: init.lua(184): [web_backend]StartupCheck failed, error: org.freedesktop.DBus.Error.UnknownObject: Unknown object path /bmc/kepler/web_backend/MicroComponent
      
    • 尽管最终显示所有50个组件启动正常check startup status completely, total components count: 50, normal count: 50),但早期连续报错表明存在服务延迟或丢失注册问题。
  • 环境信息
    • 软件版本:OpenUBMC 2512
    • OS:Ubuntu 24.04
    • 硬件:未指定具体型号(可能涉及Hi1711/KP920模组)

:puzzle_piece: 根本原因分析

1. 关键组件缺失导致启动失败触发自动回滚

日志中多次出现对 dcmidredfishweb_backend 等组件的启动检测失败错误。maca 模块是OpenUBMC中用于监控各微服务状态的核心守护进程。当它检测到关键组件无法上线时,会判定系统启动异常。

虽然日志末尾报告“全部组件启动成功”,但这可能是由于:

  • 超时重试机制生效:某些组件延迟加载,在多次重试后才注册成功。
  • 状态检测窗口过短:系统在启动初期判断失败,已触发回滚逻辑,即使后续服务恢复也无法挽回。

:white_check_mark: 结论:系统因关键服务 bmc.kepler.redfishbmc.kepler.web_backend 初始不可达,被判定为启动异常,触发自动回滚机制,切换至备份分区的旧版本固件。


2. 为何关键服务未能及时启动?可能原因如下:

原因 分析依据
构建配置错误(如未包含redfish组件) 在自定义编译过程中,若 manifest.yml 中未正确声明依赖组件(如 redfishdcmid),则这些服务不会被打包进rootfs。
Conan依赖不一致导致组件缺失或冲突 busybox/1.34.0@openUBMC.release/stable 等组件通过Conan管理,若本地缓存或远程仓库版本有变,可能导致构建结果不稳定。搜索结果9 显示类似问题由 ssdp Conan包更新引发。
D-Bus服务注册路径错误或配置缺失 Lua服务依赖 .service 文件注册至D-Bus总线。若构建过程中该文件未生成或路径错误,则 maca 无法发现服务。
固件包签名/验证失败 若未正确配置签名证书或启用 manufacture: true,可能导致部分安全初始化流程中断,影响服务启动顺序。参考文档chunk 3
Secure Boot或分区激活策略问题 日志中显示 Secure Bootloader/FW boot from active partition,说明使用安全启动。若新镜像未被信任链认可,可能被静默拒绝执行。

:white_check_mark: 解决方案建议

:wrench: 1. 确保构建配置完整且正确

:white_check_mark: 检查 manifest.yml 是否启用必需组件:

components:
  - name: redfish
    repo: https://gitee.com/openubmc/redfish.git
  - name: web_backend
    repo: https://gitee.com/openubmc/web_backend.git
  - name: dcmid
    repo: https://gitee.com/openubmc/dcmid.git

:white_check_mark: 启用制造模式以支持默认账户和调试功能:

account:
  option:
    manufacture: true

默认用户名/密码:Administrator / openUBMC@2025 —— 参见 document chunk 3


:floppy_disk: 2. 验证固件包内容完整性

# 解压固件包并检查关键服务是否存在
tar -xvf rootfs_openUBMC.hpm
ls rootfs/usr/lib/systemd/system/bmc.kepler.*.service
# 应包含 bmc.kepler.redfish.service, bmc.kepler.web_backend.service 等

若缺失对应 .service 文件,则说明构建流程未正确生成D-Bus服务描述,需修复构建脚本。


:warning: 3. 临时禁用自动回滚机制进行调试

在升级前,通过命令行关闭失败自动回滚功能,防止系统立即切换回旧版本,便于观察真实启动过程:

ipmcset -t maintenance -d disableautobootfailover

升级后手动检查日志,确认具体哪个服务未能启动。调试完成后再重新启用:

ipmcset -t maintenance -d enableautobootfailover

:locked_with_key: 4. 正确处理签名与验证机制

若您使用的是自签名固件包,请确保:

  • 所有子固件(CPLD、BIOS等)也使用相同的签名证书
  • 构建时启用了 hpm_encrypt 加密流程;
  • .bmcgo/config 中配置:
    [hpm_encrypt]
    enable=true
    

:cross_mark: 错误提示:“无效的升级包”通常源于未加密或签名不匹配。参见 document chunk 3


:broom: 5. 执行清根操作避免残留干扰

历史配置残留可能导致服务冲突或加载失败:

# 清除所有配置、日志、证书和固件状态标志
ipmcset -t maintenance -d clearcfg

建议在首次刷入新版本前执行此命令,并双分区刷写以确保无残留iBMC代码。


:books: 相关技术支持资源

内容 链接/参考
OpenUBMC固件升级指导 https://discuss.openubmc.cn/t/topic/2060 — 详细说明从iBMC升级至OpenUBMC的构建与部署步骤
Web界面上传限制说明 document chunk 8:解释为何HPM包大小限制为90MB及修改方法
调试工具使用指南 使用 bingo CLI 管理构建流程,配合 Docker 镜像 Openubmc Ubuntu 24.04.2_26.03 进行标准化构建
官方论坛求助 OpenUBMC Forum — 社区提供实时技术支持与案例分享

:receipt: 总结

项目 内容
问题本质 固件升级后因关键服务(如Redfish、Web Backend)未及时启动,触发系统自动回滚机制,导致“升级成功但回退旧版”现象。
根本原因 构建配置不当导致服务缺失,或签名、依赖管理混乱引发运行时异常。
核心解决路径 :white_check_mark: 检查manifest配置
:white_check_mark: 验证服务文件存在性
:white_check_mark: 启用manufacture模式
:white_check_mark: 禁用自动回滚临时调试
:white_check_mark: 执行清根操作
推荐行动顺序 1. 重新构建包含完整组件的固件包
2. 升级前执行 clearcfg
3. 禁用自动回滚
4. 升级并观察串口日志
5. 确认无误后再启用自动回滚

:pushpin: 建议立即操作

重新审核您的 manifest.yml 配置,确保所有必要组件(特别是 redfishweb_backend)均已声明,并使用官方推荐的构建流程(如 bingo build + packethpm)生成固件包。

如问题持续,请提交完整日志至 OpenUBMC论坛,标注引用话题并附上 .hpm 包的SHA256哈希值以便追踪。

排查方式:
1.查看framework.log,看是否有组件启动异常,连续两次启动检查失败会触发切分区。关键日志:xxx StartCheckup failed
2.尝试清根,例如非社区包升级至社区包场景
3.查看BMC串口日志看是否有内核报错

感谢回复,这个问题解决了。