基于bmc_sdk 25.12制作docker镜像报错

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

基于 bmc_sdk 25.12 制作 Docker 镜像报错问题分析与解决方案

根据您提供的日志信息和上下文数据,当前在使用 bmc_sdk 25.12 版本和 openUBMC/manifest.gitmain 分支代码构建 Docker 镜像时出现多个关键错误。以下是对问题的详细分析及可行解决方案。


:magnifying_glass_tilted_left: 一、问题概述

  • 目标:基于 bmc_sdk 25.12 制作 OpenUBMC 的 Docker 构建镜像。
  • 环境
    • 操作系统:Ubuntu 24.04
    • 芯片架构:x86_64(i7-14700)
    • 内存:64GB
    • Conan 版本:2.24.0
    • 使用脚本:build_image.py -s ./bmc_sdk.zip -u xx -p xxx -t openubmc/25.12
  • 错误表现
    • YAML 文件中缺失多个关键配置项(如 show_version, archive, profile
    • 提示缺少 crypto_tool
    • 报错退出状态码为 255

:puzzle_piece: 二、关键错误分析

1. YAML 文件缺失必要字段

相关日志:

不能从 yaml 文件中获取到键值 base/show_version, 没有相关配置
不能从 yaml 文件中获取到键值 tosupporte/default/show_version, 没有相关配置
不能从 yaml 文件中获取到键值 archive, 没有相关配置
不能从 yaml 文件中获取到键值 base/profile, 没有相关配置

原因分析:

这些字段是 manifest.yml 中必须存在的配置项,用于控制构建流程。特别是:

字段 用途 来源
base/show_version 是否在版本信息中显示自定义版本号 manifest.yml
tosupporte/default/show_version 定制发布包是否显示版本 manifest.yml
archive 指定构建产物默认输出路径 archive.inimanifest.yml
base/profile 构建使用的 Conan profile 名称 manifest.yml

:red_exclamation_mark: 说明当前使用的 main 分支 manifest 代码 未正确配置这些字段,或 与 bmc_sdk_25.12 不兼容

:white_check_mark: 解决方案:

确保 manifest/build/product/BMC/openUBMC/manifest.yml 包含以下内容:

base:
  show_version: true
  profile: "profile.dt.ini"  # 或其他有效 profile 文件名

tosupporte:
  default:
    show_version: true

archive: "default_archive_path/"  # 可选,但需存在或设置默认值

同时确认:

  • profile.dt.ini 文件存在于项目中(通常位于根目录或 profiles/
  • 若使用自定义 tosupporte 包类型,请确保结构完整

2. 缺少 crypto_tool 导致 HPM 加密失败

相关日志:

ERROR: 开启了hpm加密配置, 在环境中未找到 ‘crypto_tool’, 请确认环境配置是否正确.

原因分析:

  • 根据文档 {id: 6}构建制品定制化方案),post_hpm 脚本会在制作 HPM 包前执行。
  • 若启用了加密签名(如通过 gpp.files.condition 设置了 .cms 输出),系统将尝试调用 crypto_tool
  • 此工具通常由 签名服务器组件 提供,未安装则导致构建中断。

:white_check_mark: 解决方案:

方案一:临时关闭 HPM 加密功能

修改 manifest.yml 中的 gpp.files 配置,移除或注释以 .cms 结尾的输出项

gpp:
  files:
    # - file: ${work_out}/rootfs_BMC.img.cms  # 注释此行可绕过 crypto_tool 检查
    - file: ${work_out}/rootfs_BMC.img
    - file: ${work_out}/rootfs_BMC.tar.gz

:warning: 注意:仅适用于非安全测试场景。

方案二:安装签名服务组件

按照《[PKI 实践指南]{id:5}》和《[签名包制作指导]{id:3}》搭建本地签名服务:

  1. 安装 cms-server

    go build -o cms-server main.go
    
  2. 准备证书材料(rootca.pem, signer.pem 等)

  3. 启动服务并确保 crypto_tool$PATH 中可访问


3. Conan 版本过高导致兼容性问题

关键信息:

  • 当前 Conan 版本:2.24.0
  • 根据知识图谱描述:

    version 2.21.0 is noted as incompatible with openubmc-bingo 0.5.272

此外,文档 {id:4}(openUBMC 25.12 LTS 发布说明)提到:

适配 Conan 2.0,支持产品仓裁剪…

表明:

  • openUBMC 25.12 虽支持 Conan 2.x,但对具体子版本有要求
  • 当前主流推荐版本为 2.13.0(多处文档验证)

:white_check_mark: 解决方案:

降级 Conan 至 2.13.02.19.1

pip3 uninstall conan -y
pip3 install conan==2.19.1
# 或
pip3 install conan==2.13.0

验证命令:

conan --version

4. 未检测到 /opt/RTOS 目录

日志:

未检测到/opt/RTOS目录,可能未安装构建工具

原因分析:

  • /opt/RTOS 是 OpenUBMC 构建工具链的标准安装路径
  • 当前环境可能未运行 init.py 初始化脚本,或未正确挂载 SDK

:white_check_mark: 解决方案:

在执行 build_image.py 前,先手动运行初始化脚本:

cd /home/workspace/manifest
python3 init.py -s ../bmc_sdk.zip

确保:

  • bmc_sdk.zip 解压后内容被正确复制至 /opt/RTOS
  • 目录权限允许 root 访问

:hammer_and_wrench: 三、综合解决步骤(推荐)

# 1. 清理现有环境
pip3 uninstall conan -y
pip3 install conan==2.13.0

# 2. 进入 manifest 目录
cd /home/workspace/manifest

# 3. 运行初始化脚本安装 SDK
python3 init.py -s ../bmc_sdk.zip

# 4. 检查 manifest.yml 配置是否完整(参考上文补全字段)

# 5. 临时关闭 HPM 签名(避免 crypto_tool 缺失)
# 编辑 manifest.yml,注释掉所有 .cms 输出项

# 6. 执行镜像构建
python3 build_image.py -s ./bmc_sdk.zip -u <your_username> -p <your_password> -t openubmc/25.12

:books: 四、补充建议

建议项 说明
:white_check_mark: 使用官方 Docker 镜像作为基础 推荐使用 swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09 作为构建环境基础镜像(见 {id:8}
:white_check_mark: 安装 vscode-yaml 插件 可实现 manifest.yml 文件的语法检查与自动补全(见 {id:2}
:white_check_mark: 确保网络代理设置正确 若使用公司内网,需为 Docker 和 Conan 配置 HTTP 代理(见 {id:5}

:white_check_mark: 五、总结

错误 根本原因 解决方法
YAML 缺失字段 manifest.yml 配置不全 补全 show_version, archive, profile
找不到 crypto_tool 启用 HPM 加密但未部署签名服务 关闭 .cms 输出或部署签名服务
Conan 版本过高 2.24.0 与 bingo 不兼容 降级至 2.13.0 或 2.19.1
/opt/RTOS SDK 未初始化 运行 init.py 安装 SDK

:white_check_mark: 推荐最终使用 Conan 2.13.0 + 完整 manifest.yml + 关闭 HPM 签名,可快速完成镜像构建。

如需长期支持签名功能,请部署独立的 CMS 签名服务 并集成至构建流程。


如仍有问题,请提供 manifest.yml 全文及 profile.dt.ini 内容以便进一步诊断。

相关链接:

  1. 2506版本manifest编译问题
  2. BMC_studio一键出包失败
  3. bingo build报错,任务 work.build.conan 执行失败
  4. 25.12版本编译报错
  5. 构建工程 | 文档中心 | openUBMC