hi3093开发板升级了hpm包后,有报错

问题描述

在网页端对hi3093开发板升级了hpm包后,可以在串口登录,一直报错如下,然后会自动重启:

1970-01-01 00:03:18.753888 maca ERROR: init.lua(185): [qemu_mockup]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.qemu_mockup was not provided by any .service files, check count: 1
[ 213.078953] [I2C-09-RT<-5|-5>] M<0x48|0x1|0x0|1|10> L<1|2|0> C<1|0|2> E<0x801|0x0|0x0|0x1> I<0x0|0x110|0x0>
[ 213.092786] [I2C-09-RT<-5|-5>] M<0x4f|0x1|0x0|1|10> L<1|2|0> C<1|0|2> E<0x801|0x0|0x0|0x1> I<0x0|0x110|0x0>
1970-01-01 00:03:33.798425 maca ERROR: init.lua(185): [qemu_mockup]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.qemu_mockup was not provided by any .service files, check count: 2
1970-01-01 00:03:48.829155 maca ERROR: init.lua(185): [qemu_mockup]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.qemu_mockup was not provided by any .service files, check count: 3
1970-01-01 00:04:03.863475 maca ERROR: init.lua(185): [qemu_mockup]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.qemu_mockup was not provided by any .service files, check count: 4
1970-01-01 00:04:18.895766 maca ERROR: init.lua(185): [qemu_mockup]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.qemu_mockup was not provided by any .service files, check count: 5
[ 273.134134] [I2C-09-RT<-5|-5>] M<0x48|0x1|0x0|1|10> L<1|2|0> C<1|0|2> E<0x801|0x0|0x0|0x1> I<0x0|0x110|0x0>
[ 273.151159] [I2C-09-RT<-5|-5>] M<0x4f|0x1|0x0|1|10> L<1|2|0> C<1|0|2> E<0x801|0x0|0x0|0x1> I<0x0|0x110|0x0>
1970-01-01 00:04:33.947329 maca ERROR: init.lua(185): [qemu_mockup]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.qemu_mockup was not provided by any .service files, check count: 6

环境信息

  • 软件版本:OpenUBMC2512

期望结果

可以重复升级hpm包

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

总结

本次问题的根本原因是:将含有 QEMU 仿真依赖组件(qemu_mockup)的固件包误刷到了真实的 Hi3093 开发板上,导致系统试图加载不存在的服务,从而不断报错并重启

最终解决方案:

  1. 停止使用带有 qemu_mockup 的仿真 HPM 包
  2. 重新使用标准构建命令生成适用于 Hi3093 的 HPM 包
  3. 通过 TFTP 或 SD 卡方式彻底重刷系统
  4. 完成升级后执行 HPM 包固化以确保持久化

如此即可恢复正常运行,避免再次出现 D-Bus 服务缺失问题,并支持重复升级 HPM 包。

:white_check_mark: 延伸阅读推荐

  • Hi3093开发板上手教学》——掌握标准烧录流程
  • Firmware Upgrade Process 安全机制说明 ——保障升级可靠性
  • Shenwei(百信) 提供的构建实践建议 ——社区权威指导
点击此处查看详细分析解答

Hi3093开发板升级HPM包后报错问题分析与解决

问题描述

在通过网页端对 Hi3093开发板 升级 HPM 固件包后,虽然可以通过串口登录系统,但持续出现如下报错,并触发自动重启:

1970-01-01 00:03:18.753888 maca ERROR: init.lua(185): [qemu_mockup]StartupCheck failed, 
error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.qemu_mockup was not provided by any .service files, check count: 1
...
1970-01-01 00:04:33.947329 maca ERROR: init.lua(185): [qemu_mockup]StartupCheck failed, 
error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.qemu_mockup was not provided by any .service files, check count: 6

环境信息

  • 硬件平台:Hi3093 开发板(如 Milr Hi3093 或 Mirr Hi3093)
  • 软件版本:OpenUBMC 2512
  • 操作方式:通过 Web UI 执行带外通道的 HPM 包升级
  • 现象特征
    • 系统时间显示为 1970-01-01(Unix 时间起点),表明 RTC 时间未正确初始化或系统未能完成完整启动流程
    • 报错中涉及 D-Bus 服务找不到模块 bmc.kepler.qemu_mockup
    • 错误重复6次后触发自动重启(符合系统健康检查机制)

根本原因分析

根据上下文信息和报错日志内容,可确定以下几点:

1. 报错服务 qemu_mockup 的来源

  • qemu_mockup 是一个用于 QEMU 虚拟仿真环境的模拟驱动服务,属于 openUBMC 的仿真测试组件
  • 在真实硬件(如 Hi3093 开发板)上运行时,该服务 不应被启用或依赖
  • 此错误表明:系统尝试加载仅适用于 QEMU 仿真的组件,但在物理设备上无法找到对应服务文件

2. 可能原因剖析

可能原因 依据
构建配置错误:使用了带有 qemu_mockup 组件的调试/仿真固件包 - 上下文中提及:“qemu_mockup新仓专门管理仿真数据和驱动”(见搜索结果3)
- 表示存在独立的仿真组件模块
- 若将 QEMU 专用镜像刷入真实开发板,会导致此问题
Firmware Upgrade 流程不完整,导致部分组件未正确写入 - Firmware Upgrade Process 需要验证签名、解压、写入配置等多个步骤(KG数据)
- 若升级过程中断或失败,可能导致系统状态不一致
系统依赖组件缺失或启动顺序异常 - 类似报错曾在其他组件缺失时出现,例如升级后起不来的情况中也出现 StartupCheck failed(参考 Document Chunk 7)
- 错误提示 The name bmc.kepler.xxx was not provided by any .service files 是典型的 D-Bus 服务未注册问题

解决方案

:white_check_mark: 方案一:确认是否误用了 QEMU 仿真固件包

核心判断点:您当前刷写的 rootfs_openUBMC.hpm 是否是为 真实硬件(Hi3093)构建的产物

检查方法:

  1. 检查构建命令中是否启用了 QEMU 相关配置:
    bingo build -b openUBMC -qt              # ❌ 启用了 QEMU Target,不适用于真实开发板
    bingo build -b openUBMC                  # ✅ 正确,针对真实硬件构建
    
  2. 检查输出包路径:
    • QEMU 专属包路径通常为:manifest/output/packet/inner/*.cpio.gz
    • 真实硬件 HPM 包路径应为:manifest/output/rootfs_openUBMC.hpm

解决步骤:

  • 重新构建标准 HPM 包
    cd manifest
    bingo build -b openUBMC -r openubmc_dev   # 构建适用于真实硬件的 HPM 包
    
  • 使用生成的 rootfs_openUBMC.hpm 文件进行升级。

:white_check_mark: 方案二:清理并重新烧录系统

由于当前系统已处于异常状态(时间错误 + 服务缺失),建议执行彻底恢复流程。

步骤如下:

  1. 通过 SD 卡或 TFTP 方式重新烧写完整镜像

    • 参考:《[Community Hi3093 Development Board Onboarding Guide]》
    • 支持方式包括:
      • 使用 TFTP 加载 rootfs_BMC.img(KG 中提及 TFTP 是有效上传方式)
      • 使用 SD 卡备份恢复(KG 提到推荐使用 SD Card Backup 恢复)
      • 使用脚本 Hi3093_upgrade.sh 执行 emmc 更新
  2. 确保进入 U-Boot 阶段进行正确引导配置

    • 在启动时按任意键进入 U-Boot 菜单
    • 确认启动参数指向正确的内核和根文件系统:
      bootcmd=run mmc_boot
      mmc_boot= mmc read ${loadaddr} 0x800 0x3000; bootm ${loadaddr}
      
  3. 烧录完成后,执行一次 HPM 固化操作

    • 将系统完全写入 eMMC,防止下次重启丢失状态:
      • 登录网页 → 系统管理 > 固件更新
      • 上传 HPM 包 → 执行升级
      • 见文档:“升级一次 hpm 包,会把内核文件等烧录到 emmc 中”(搜索结果1)

:white_check_mark: 方案三:排查构建环境与配置一致性

根据 KG 和文档内容,需确保构建环境符合要求:

检查项清单:

检查项 正确做法
board_name 设置是否正确 必须为 openUBMC(KG 中多处体现)
Conan 构建时是否指定了错误选项 避免添加 -qt 或与 qemu_mockup 相关的 profile
是否启用了不适用于 Hi3093 的组件 不应在构建中包含 qemu_mockup 模块
是否使用正确的 SDK 和 Docker 镜像 推荐使用:swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09

示例正确构建流程:

# 启动容器(使用标准生产环境镜像)
docker run -it --privileged --network host \
  -v $(pwd):/home/workspace \
  swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09 /bin/bash

# 初始化项目
python3 init.py -path ./bmc_sdk.zip -user USER -psw PASSWORD

# 执行构建(禁止启用 QEMU 相关参数)
bingo build -b openUBMC -r openubmc_dev

预防措施与建议

措施 说明
严格区分仿真与真实设备固件包 仿真包用于 QEMU 测试,不可用于真实板卡
命名规范 将 HPM 包命名为 rootfs_openUBMC_hi3093.hpm 明确用途
升级前校验包签名与兼容性 确认包中不含 qemu_mockup 等非目标平台组件
保留原始 OpenEuler 系统备份 当前 Hi3093 开发板曾搭载 OpenEuler 系统,可用于恢复(KG 数据)

总结

本次问题的根本原因是:将含有 QEMU 仿真依赖组件(qemu_mockup)的固件包误刷到了真实的 Hi3093 开发板上,导致系统试图加载不存在的服务,从而不断报错并重启

最终解决方案:

  1. 停止使用带有 qemu_mockup 的仿真 HPM 包
  2. 重新使用标准构建命令生成适用于 Hi3093 的 HPM 包
  3. 通过 TFTP 或 SD 卡方式彻底重刷系统
  4. 完成升级后执行 HPM 包固化以确保持久化

如此即可恢复正常运行,避免再次出现 D-Bus 服务缺失问题,并支持重复升级 HPM 包。

:white_check_mark: 延伸阅读推荐

  • Hi3093开发板上手教学》——掌握标准烧录流程
  • Firmware Upgrade Process 安全机制说明 ——保障升级可靠性
  • Shenwei(百信) 提供的构建实践建议 ——社区权威指导

相关链接:

  1. 真实板卡升级phm固件包,提示无效的升级包
  2. Hi3093开发烧写后无法启动,报CRC错误
  3. bingo build报错,任务 work.build.conan 执行失败
  4. 2509版本hpm包导致403 (Forbidden)
  5. openUBMC

你构建整包时,有做什么修改吗?我看启动过程中有将 qemu_mockup这个组件拉起来。但本质上这个组件只有在qemu仿真时才会用到,不应该出现在开发板环境中

您好!执行过bingo build -bt debug -t personal -sc qemu 在qemu验证了一下出的包,才烧到开发板上,该指令会修改hpm包吗,能提供一下解决办法吗 :folded_hands:

`-sc qemu`制作出来的包只能够在qemu中使用。你验证完成之后,应当去掉这个参数重新出包。然后使用该hpm包进行升级。

在使用自己制作的hpm包升级之前,推荐先使用我们提供的稳定的hpm包进行升级,这样能够将固件配置刷新到持久化中,避免回滚时还要手动烧录img这些文件。

1 个赞

好的 已解决 我现在正在适配一张GPU卡,想咨询一下,开发板的pcie中的smbus没接到hi3093,应该就不能把卡插在pcie上,那硬件自发现加载不了so驱动吧?请问,还有其他方式能验证gpu的so驱动吗 :face_in_clouds:

@changxingOpenUBMC

目前在Hi3093上应该没有办法对PCIe卡进行调试,因为BMC识别PCIe设备依托于 Host OS对PCIe设备的BDF分配能力,如果是想要调试南向框架编译出来的so,可以在Qemu平台中进行调试。可以参考这个 【Qemu应用】如何在Qemu使用PCIe卡