答案内容由AI生成,仅供参考:
基于 bmc_sdk 25.12 制作 Docker 镜像报错问题分析与解决方案
根据您提供的日志信息和上下文数据,当前在使用 bmc_sdk 25.12 版本和 openUBMC/manifest.git 的 main 分支代码构建 Docker 镜像时出现多个关键错误。以下是对问题的详细分析及可行解决方案。
一、问题概述
- 目标:基于
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
- YAML 文件中缺失多个关键配置项(如
二、关键错误分析
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.ini 或 manifest.yml |
base/profile |
构建使用的 Conan profile 名称 | manifest.yml |
说明当前使用的
main分支manifest代码 未正确配置这些字段,或 与 bmc_sdk_25.12 不兼容。
解决方案:
确保 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。 - 此工具通常由 签名服务器组件 提供,未安装则导致构建中断。
解决方案:
方案一:临时关闭 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
注意:仅适用于非安全测试场景。
方案二:安装签名服务组件
按照《[PKI 实践指南]{id:5}》和《[签名包制作指导]{id:3}》搭建本地签名服务:
-
安装
cms-server:go build -o cms-server main.go -
准备证书材料(
rootca.pem,signer.pem等) -
启动服务并确保
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(多处文档验证)
解决方案:
降级 Conan 至 2.13.0 或 2.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
解决方案:
在执行 build_image.py 前,先手动运行初始化脚本:
cd /home/workspace/manifest
python3 init.py -s ../bmc_sdk.zip
确保:
bmc_sdk.zip解压后内容被正确复制至/opt/RTOS- 目录权限允许 root 访问
三、综合解决步骤(推荐)
# 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
四、补充建议
| 建议项 | 说明 |
|---|---|
推荐使用 swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_25.09 作为构建环境基础镜像(见 {id:8}) |
|
vscode-yaml 插件 |
可实现 manifest.yml 文件的语法检查与自动补全(见 {id:2}) |
若使用公司内网,需为 Docker 和 Conan 配置 HTTP 代理(见 {id:5}) |
五、总结
| 错误 | 根本原因 | 解决方法 |
|---|---|---|
| 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 |
推荐最终使用 Conan 2.13.0 + 完整
manifest.yml+ 关闭 HPM 签名,可快速完成镜像构建。
如需长期支持签名功能,请部署独立的 CMS 签名服务 并集成至构建流程。
如仍有问题,请提供 manifest.yml 全文及 profile.dt.ini 内容以便进一步诊断。
相关链接: