☰
openubmc 环境搭建
2026/9/26 19:31:49 网站建设 项目流程

openUBMC 26.06 版本构建指导书

基于 Ubuntu 24.04 LTS 搭建 openUBMC 构建环境,完成系统准备、环境初始化、工具安装、配置及构建出包的全流程。

第1章 系统准备

本章介绍 openUBMC 构建对操作系统、硬件资源和网络环境的基本要求,并提供开发环境搭建指导。

注意:本文档中所有操作(包括系统包安装、交换分区配置、环境初始化等)均需在root权限下执行。请使用sudo -i或su -切换到 root 身份后再继续。

1.1 操作系统要求

项目要求
操作系统Ubuntu 24.04 LTS或openEuler 24.03 LTS(当前验证基线为 LTS-SP4)
芯片架构Ubuntu 验证基线为x86-64(amd64);openEuler 验证基线为aarch64(Kunpeng)
内核版本6.8+(Ubuntu);openEuler 以 24.03 LTS-SP4 系统自带内核为准

系统识别说明:init.py 仅按 os-release 的系统 ID 识别并进入对应分支(Ubuntu / openEuler),不校验版本号、SP 与 CPU 架构——架构与版本适配由下游自然暴露(pip 按宿主架构选择 Wheel、deb 源架构、制品校验)。上表为当前验证与验收基线,未列组合未经验证、不在支持承诺内。

Windows 用户需要通过 Docker Desktop 或 WSL 2 部署 Ubuntu 24.04;Mac 用户需要通过 Docker Desktop 或虚拟机部署 Ubuntu 24.04。openEuler 初始化当前定位为bootstrap 冷启动(安装 bingo 与 pre-commit 工具链):bingo deps install、install_sdk等后续流程由 bingo 自身命令管理,init.py 不代为执行;QEMU 与 BMC Studio 暂不覆盖。详细的开发环境搭建指导请参考:环境准备。

1.2 硬件要求

资源最低配置推荐配置说明
可用内存16 GB32 GB+Windows 宿主机建议 32 GB+
交换分区32 GB64 GB强烈建议配置,否则易 OOM
磁盘空间64 GB256 GB+(SSD)构建产生大量中间文件
网络可访问外网宽带连接需下载大量依赖和源码包

1.3 网络访问要求

构建过程须访问以下资源,请确保防火墙已放行:

地址用途
https://mirrors.huaweicloud.com公共镜像站
https://registry.npmmirror.comnpm 镜像源
https://openubmc-apt-repo.obs.cn-north-4.myhuaweicloud.comopenUBMC APT 仓库
https://keyserver.ubuntu.comUbuntu GPG 密钥服务器
https://conan.openubmc.cnConan 包管理仓库
https://repo.openubmc.cnopenUBMC 工具仓库
https://gitcode.com代码托管平台

验证网络连通性(在 Ubuntu 终端中执行):

for url in \ "https://mirrors.huaweicloud.com" \ "https://registry.npmmirror.com" \ "https://openubmc-apt-repo.obs.cn-north-4.myhuaweicloud.com" \ "https://keyserver.ubuntu.com" \ "https://conan.openubmc.cn" \ "https://repo.openubmc.cn" \ "https://gitcode.com" do echo -n "$url: " curl -sL -o /dev/null -w "%{http_code}\n" --max-time 5 "$url" done

所有地址返回2xx或3xx状态码表示连通正常;若有失败,请检查网络代理或联系管理员放行。

若下载速度慢,建议配置 apt/pip 加速源,例如https://mirrors.huaweicloud.com、https://developer.aliyun.com/mirror/。

1.4 搭建开发环境

详细的开发环境搭建指导请参考:环境准备

原生 Ubuntu / WSL 环境
确认系统版本
cat /etc/issue

确认输出为Ubuntu 24.04 LTS。

安装系统基础工具
sudo apt-get update sudo apt-get install -y git python3 python3-pip python3-venv wget curl unzip \ lsb-release apt-transport-https ca-certificates gnupg2 software-properties-common \ libcurl4t64 libcurl4-openssl-dev pkg-config

libcurl4t64和libcurl4-openssl-dev必须同步安装,否则 Ubuntu 安全更新推送新版libcurl4t64时会因版本严格绑定导致libcurl4-openssl-dev安装失败(signer 运行时依赖 libcurl)。新版 init.py 已改为 pip 安装 bingo 平台 Wheel,不再触发 bingo 的 apt 依赖解析;若环境中仍出现版本冲突(如安装其它 apt 包),可显式指定版本同步安装或降级:

# 查看 libcurl4-openssl-dev 可用的旧版本(即 init.py 所需的版本) apt policy libcurl4-openssl-dev # 显式指定版本同步安装(版本号以 apt policy 输出为准) apt install -y libcurl4t64=8.5.0-2ubuntu10.9 libcurl4-openssl-dev=8.5.0-2ubuntu10.9

安装后正常运行 init.py 即可。若降级不可行,也可在 init.py 失败后手动 pip 安装:pip install openubmc-bingo --upgrade。

配置交换分区
# 检查当前交换分区 swapon --show # 若交换不足 32 GB(最低),创建交换文件(推荐 64 GB) sudo fallocate -l 64G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 持久化到 /etc/fstab(请先确认 fstab 中无重复 swapfile 条目) grep -q '/swapfile' /etc/fstab || echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

云服务器厂商通常不配置或只配置少量交换分区,请务必检查并补足。

配置完成后跳至第 2 章 — 环境初始化与工具安装继续。

Docker 容器环境

Windows 和 Mac 用户推荐通过 Docker Desktop 使用容器进行构建。

重要:不要使用-v挂载宿主机目录到容器的/home/workspace。挂载宿主机已有的 workspace 目录会导致容器继承宿主机的构建缓存和残留配置,使init.py的install_sdk步骤因路径冲突而失败。正确做法是在容器内通过git clone获取代码,确保容器环境干净完整。

# 拉取推荐镜像 docker pull swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2 # 启动容器(不挂载宿主机目录) docker run -it --name openubmc-env \ -w /home/workspace \ swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2 \ /bin/bash # 容器内安装基础工具(裸镜像不含 git/python3/sudo 等,必须先装) apt-get update && apt-get install -y python3 sudo make locales wget curl git libcurl4t64 libcurl4-openssl-dev pkg-config

容器启动并安装基础工具后,按照第 2 章继续操作(从 2.2 Git 全局配置开始;2.1 注册账号可在宿主机浏览器完成),注意在执行 2.6 时使用Docker 容器非交互环境的流程。


第2章 环境初始化与工具安装

系统准备就绪后,按本章步骤完成账号注册、代码下载、工具安装和环境配置。

以下操作需要在 root 身份下执行,否则使用sudo。普通用户可通过sudo -i或su -切换到 root 身份;当前用户若不在 sudo 组中,请先联系管理员将用户加入 sudo 组(usermod -aG sudo <用户名>)后重新登录。

2.1 注册社区账号

构建过程需要 Conan 包管理器登录认证,请先注册社区账号。

  1. 访问 openUBMC 用户中心
  2. 填写信息完成注册
  3. 此账号将用于:Conan 包管理器认证、社区资源访问、bmcsdk 下载鉴权

2.2 Git 全局配置

git config --global user.name "<你的用户名>" git config --global user.email "<你的邮箱>"

重要:提交 PR 时社区 CI 会基于此邮箱检查 CLA 签署状态,请确保与 GitCode 注册邮箱一致。

2.3 创建工作目录

后续所有代码和构建产物均放在/home/workspace下。

# 注意:Docker 容器中的工作目录固定为 /home/workspace # WSL / 原生 Ubuntu 用户自行创建 mkdir -p /home/workspace cd /home/workspace

2.4 克隆 manifest 仓库

manifest 仓库是构建的入口,管理所有子仓库的版本依赖和构建策略。

git clone https://gitcode.com/openUBMC/manifest.git cd manifest

如果本地已有 manifest 代码,请先同步最新代码:

cd /home/workspace/manifest git pull -r origin main

2.5 SDK 下载方式说明

26.06 版本不再需要手动下载 bmcsdk zip 包,SDK 由 manifest.yml 中的配置自动管理。产品 manifest 文件(例如:manifest/build/product/BMC/openUBMC/manifest.yml)已预置以下关键配置:

openubmc_sdk: conan: "openubmc_sdk/latest@openubmc/stable"

openubmc_sdk字段指定了 SDK 的 Conan 包引用,bingo 在构建时自动通过 Conan 拉取对应版本的交叉编译器、工具链等,用户无需手动下载或解压。

平台 SDK 通过platform字段管理(已预置ibmc_sdkConan 引用),如需使用平台整包(packages_download+platform.package)方式,请参考 platform_full_package_integration_guide.md。

2.6 执行一键环境初始化

init.py脚本自动完成工具安装与系统配置:

#步骤说明
1操作系统检查按系统 ID 识别分支(Ubuntu / openEuler,验证基线见 1.1 节;不校验版本/SP/架构)
2系统依赖安装Ubuntu 走既有全量链;openEuler 按最小集 dnf 安装(含 pre-commit 前置)
3APT 源配置添加 openUBMC 仓库和 GPG 密钥(仅 Ubuntu 分支)
4bingo 安装Ubuntu 走既有 deb 源 + deb 包 + pip 链;openEuler 走 pip 安装(冷启动)
5Conan 配置与登录安装 C/C++ 包管理器并配置远程仓库、使用社区账号登录
6pre-commit 工具node/stylua/luacheck 两平台必装(node 版本满足时跳过 n 链)
7SDK/QEMU(仅 Ubuntu)install_sdk与 QEMU 链为 Ubuntu 既有行为;openEuler 冷启动不执行
8环境变量配置设置 PATH 等

BMC Studio 已移出默认初始化主链,如需安装参见「BMC Studio 手工安装」章节。

2.6.1 工具安装清单

以下为init.py自动安装的完整工具列表,供问题排查和环境验证参考:

工具安装方式包名/引用版本/来源说明
Conanpipconan=2.13.02.13.0C/C++ 包管理器
bingoUbuntu: apt deb 源+deb 包(既有链);openEuler: pipopenubmc-bingoopenUBMC APT 仓库 / 公共 pypi 镜像openUBMC 构建工具链
Node.jsUbuntu: npmn;openEuler: dnf-v20.18(openEuler 源实测 20.18.2)JavaScript 运行环境,pre-commit 依赖
npm随 Node.js / npm-10.8.2Node.js 包管理器
stylua/luachecknpm / luarocks@johnnymorganz/stylua-bin、luacheck rockdailybuild.openubmc.cnpre-commit Lua 工具,两平台必装
cangjie-runtimeaptcangjie-runtimeopenUBMC APT 仓库仓颉语言运行时(仅 Studio 手工安装场景需要)
openubmc-qemuaptopenubmc-qemuopenUBMC APT 仓库QEMU 虚拟机(仅 Ubuntu;openEuler 暂不支持)
gcc/g++aptgcc-9,g++-99.xC/C++ 编译器
BMC Studio 手工安装

init.py不再自动安装 BMC Studio。如需使用,请在初始化完成后手工执行:

# Studio 运行依赖(含 cangjie-runtime) sudo apt-get install -y wslu xdg-utils nginx sudo apt install -y cangjie-runtime # 需先配置 openUBMC APT 源 # 下载并安装 Studio deb wget https://repo.openubmc.cn/latest/tools/BMC%20Studio.zip -O studio.zip unzip studio.zip sudo dpkg -i <解出的deb> # 如依赖报错,执行修复后重试 sudo apt install -y -f sudo dpkg -i <解出的deb>

系统依赖(通过 apt 批量安装):

python3, python3-pip, python3-dev, git, wget, curl, ca-certificates, ipmitool, dbus-x11, libdbus-1-dev, dbus, pkgconf, libglib2.0-dev, gcc-9, g++-9, unzip, npm

bmcsdk 不再需要手动下载和解压,26.06 版本通过 manifest.yml 中的openubmc_sdk字段由 Conan 在构建时自动拉取。

常规环境(有交互终端)

所有环境(含常规终端和 Docker 容器)均建议预先设置许可证自动接受,防止 init.py 的install_sdk因许可证交互确认而阻塞或失败。

预设许可证自动接受(在运行 init.py 之前执行)

# 设置环境变量,让 init.py 和 install_sdk 自动接受许可证 export OPENUBMC_LICENSE=true

执行 init.py

必须指定 Conan 用户名密码,否则 Conan 登录步骤将失败。

cd /home/workspace/manifest python3 init.py -user <用户名> -psw '<密码>'

重要:如果init.py执行过程中某个步骤失败,失败摘要会标注失败阶段与已完成项;在修复失败原因后,需要重新再执行一次init.py,各阶段可安全重跑,确保所有初始化步骤均成功完成。

Docker 容器非交互环境

Docker 容器无交互终端,init.py 的install_sdk步骤会因许可证交互确认而 EOF 失败。必须按以下顺序逐步执行,不得跳过任何步骤:

前提:容器已按 1.4 节 Docker 环境启动并安装基础工具,并完成了 2.2(Git 全局配置)、2.3(创建工作目录)和 2.4(克隆 manifest 仓库),当前在/home/workspace/manifest目录下。

第 1 步:预设许可证自动接受(在运行 init.py 之前执行)

# 设置环境变量,让 init.py 和 install_sdk 自动接受许可证 export OPENUBMC_LICENSE=true

第 2 步:执行 init.py

cd /home/workspace/manifest echo 'Y' | python3 init.py -user <用户名> -psw '<密码>'

echo 'Y'通过管道为代理确认等交互步骤提供输入,配合第 1 步的环境变量,避免交互式确认阻塞。

第 3 步:验证初始化是否完整

init.py 可能因环境问题中断,导致部分步骤未完成。必须逐项检查:

# 检查 Conan profile 是否生成(至少应有 default、profile.dt.ini、profile.luajit.ini) ls ~/.conan2/profiles/ # 检查 /opt/RTOS 是否存在且包含版本号目录(如 208.11.0) ls /opt/RTOS/ # 检查 hcc 交叉编译器是否已安装 ls /opt/hcc_arm64le/ # 检查 Conan 远程仓库是否配置且可访问 conan remote list conan search -r openubmc_opensource "*" 2>/dev/null | head -3

/opt/RTOS/下应存在版本号目录(如208.11.0),/opt/hcc_arm64le/下应存在aarch64-target-linux-gnu等交叉编译工具。这两个目录是 bingo 检测构建工具和生成 Conan profile 的关键依据,缺失会导致后续构建失败。

2.7 验证初始化结果

# 检查关键工具 bingo --version conan --version node --version npm --version # 确认命令可执行 which bingo conan n node npm

若出现command not found,刷新 PATH:

source ~/.bashrc which bingo conan # 再次验证

2.8 初始化后的目录结构

/home/workspace/ ├── manifest/ │ ├── init.py # 环境初始化脚本 │ ├── build/ │ │ └── product/ │ │ └── BMC/ │ │ └── openUBMC/ │ │ ├── manifest.yml # 产品组件清单(含 openubmc_sdk 配置) │ │ ├── archive.ini # 归档配置 │ │ ├── permissions.ini # 权限配置 │ │ ├── rootfs/ # 根文件系统配置 │ │ ├── update_ext4.cfg # 分区配置 │ │ └── version.xml # 版本信息 │ └── output/ # 构建产物输出目录(初始为空) # SDK 相关目录(由 Conan 在构建时自动拉取安装) /root/packages_download/ # 平台整包下载缓存(使用 packages_download 时) /root/rtos_compiler/ # RTOS 交叉编译器(root 环境下 ~ 为 /root) /root/sdk/ # SDK 工具 /root/oee_compiler/ # OEE 交叉编译器(可选) /root/oee_sdk/ # OEE SDK(可选)

bmcsdk 由 Conan 在构建时自动拉取并安装到上述目录(通过openubmc_sdk配置),无需手动下载解压。

2.9 APT 源配置(备用)

初始化脚本会自动配置 openUBMC APT 源。如果脚本跳过此项或需要手动配置,按以下步骤操作:

# 安装 gnupg(如未安装) apt-get update && apt-get install -y gnupg # 创建密钥存放目录 mkdir -p /etc/apt/keyrings # (方式一)从公共镜像站直接下载 GPG 公钥 wget -O- https://openubmc-apt-repo.obs.cn-north-4.myhuaweicloud.com/Ubuntu/gpg_key.public \ | gpg --dearmor -o /etc/apt/keyrings/openubmc.gpg # (方式二)从密钥服务器导入(方式一失败时使用) # gpg --keyserver keyserver.ubuntu.com --recv-keys BF3B2D407FDEDEA0DC91CC9412640FBCB175287A # gpg --export BF3B2D407FDEDEA0DC91CC9412640FBCB175287A | tee /etc/apt/keyrings/openubmc.gpg >/dev/null # 配置 apt 源 echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/openubmc.gpg] https://openubmc-apt-repo.obs.cn-north-4.myhuaweicloud.com/Ubuntu/ noble main" \ | tee /etc/apt/sources.list.d/openubmc.list # 验证配置 apt-get update apt policy openubmc-bingo

正确输出应包含:

openubmc-bingo: Installed: (none) Candidate: 0.0.1 Version table: 0.0.1 500 500 https://openubmc-apt-repo.obs.cn-north-4.myhuaweicloud.com/Ubuntu noble/main amd64 Packages

2.10 配置 PATH 环境变量

初始化脚本会将部分工具安装到~/.local/bin,建议提前配置 PATH:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc

第3章 构建出包

本章提供两种构建场景,请根据您的需求选择对应章节,无需按章节顺序执行:

场景说明章节
我需要最终固件升级包(HPM)执行产品级整包构建,产出可用于刷机的 HPM 文件3.1 整包构建、3.2 构建产物
我只需要构建单个组件进行验证进入组件目录执行组件级构建,产物发布到本地 Conan 缓存3.3 组件级构建

3.1 整包构建(HPM 升级包)

HPM(Hardware Platform Management Package)是 openUBMC 的固件升级包格式。

26.06 版本支持以下产品的 HPM 包构建(产品定义见manifest/build/product/BMC/目录):

构建前请确认 Conan 已登录:bingo build需要从 Conan 远程仓库拉取组件包,若凭证缺失或过期将导致构建失败。26.06 版本仅需登录openubmc_opensource远程仓库(SDK 包已包含在该远程中),请依次操作:

# 登录 Conan 远程仓库(使用 openUBMC 社区账号) conan remote login openubmc_opensource <你的社区用户名> # 若提示输入密码,请输入社区账号密码 # 验证登录是否生效 conan search --remote openubmc_opensource "*" 2>/dev/null | head -3
产品名芯片类型系统架构
openUBMC1711RTOS
openUBMC_17121712RTOS
openUBMC_ast2600ast2600OEE(OpenEuler Embedded)

通过-b参数指定产品名,执行以下命令构建 HPM 包:

cd /home/workspace/manifest # 构建 openUBMC(1711)产品的 HPM 包 bingo build -t personal -b openUBMC # 也可指定其他产品 # bingo build -t personal -b openUBMC_1712 # bingo build -t personal -b openUBMC_ast2600

-t personal表示个人构建目标(即构建 HPM 包);-b指定产品名,默认为openUBMC。

构建过程:

  1. 解析manifest.yml,获取所有组件依赖清单
  2. 通过 Conan 自动拉取openubmc_sdk(交叉编译器、工具链等)
  3. 安装构建工具链(根据tools_install策略自动选择)
  4. 通过 Conan 从本地缓存或远程仓库下载各组件构建包
  5. 组装 rootfs 根文件系统
  6. 打包生成 HPM 固件升级文件

如需加速 C/C++ 编译,可添加--ccache参数。详见ccache 加速构建。

首次构建耗时较长(取决于网络速度和机器性能),后续构建会利用缓存加速。

3.2 构建产物

# 确认 HPM 包已生成 ls -lh /home/workspace/manifest/output/rootfs_openUBMC.hpm

产物路径:/home/workspace/manifest/output/rootfs_openUBMC.hpm

3.3 组件级构建

进入组件目录后,执行以下命令进行组件级独立构建:

组件源码需提前 clone 到工作目录。可通过以下方式获取:

# 方式一:使用 bingo fetch 拉取组件源码(推荐) cd /home/workspace bingo fetch -pi <组件包名>/<版本>@openubmc/stable -p ./source_code # 示例:拉取 mdb_interface 组件源码 bingo fetch -pi mdb_interface/1.110.9@openubmc/stable -p ./source_code # 方式二:手动从 GitCode clone cd /home/workspace git clone https://gitcode.com/openUBMC/<组件名>.git # 示例:手动 clone mdb_interface 组件 git clone https://gitcode.com/openUBMC/mdb_interface.git
cd /home/workspace/<组件目录> # 组件级构建,默认 dev 阶段 bingo build --stage=dev # 构建并发布到 stable 阶段(供整包集成使用) bingo build --stage=stable

完整命令参数:

bingo build [-h] [-bt BUILD_TYPE] [--stage STAGE] [-u] [-r REMOTE] [--conan2] [-nc] [-o OPTIONS] [--user USER] [-wb] [--ccache]
参数说明默认值
-bt/--build_type构建类型,可选debug、releasedebug
--stage包发布阶段,可选dev、pre、rc、stabledev
-u/--upload上传组件包到 Conan 仓库—
-r/--remoteConan 仓库别名,通过conan remote list查看—
--conan2强制使用 Conan2 构建组件(用于临时兼容 Conan1/Conan2 构建场景)—
-nc/--no_cache强制更新 Conan 缓存依赖—
-o/--options定义组件选项值,如-o Pkg/*:with_qt=True—
--user指定 Conan 包的 user 字段,未指定时依次尝试读取 mds/service.json,均未指定时使用openubmcopenubmc
-wb/--without_build不强制源码构建组件自身—
--ccache使用 ccache 加速 C/C++ 编译—

构建产物发布到本地 Conan 缓存后,可在manifest.yml中添加组件依赖并执行整包构建集成。

# 确认组件 Conan 包已生成 conan cache path <组件名>

产物路径(Conan 本地缓存):~/.conan2/p/<组件名>/

示例:以mdb_interface组件为例

cd /home/workspace/mdb_interface bingo build --stage=dev

将新组件加入产品:编辑manifest/build/product/BMC/openUBMC/manifest.yml,在dependencies:下添加:

dependencies: - conan: "<组件名>/<版本>@openubmc/stable"

然后重新执行bingo build进行整包构建。


第4章 常见问题排查

4.1 环境检查失败

错误信息原因解决方案
仅支持Ubuntu 24.04操作系统系统版本不是 Ubuntu 24.04cat /etc/issue确认版本
请直接执行,不支持以sudo环境执行脚本用了sudo python3 init.py用su root切换 root 后直接执行
xxx不存在,请检查命令或环境配置系统缺少基础命令或 PATH 错误确认命令已安装,检查$PATH

4.2 网络相关失败

症状:apt-get update、wget、pip install、npm install等命令超时或连接错误。

排查步骤:

  1. 重新执行网络连通性测试(见 1.3 节)

  2. 检查代理配置,根据需要取消或设置代理(常见环境变量:http_proxy、https_proxy、HTTP_PROXY、HTTPS_PROXY);

  3. 内网环境确认防火墙已放行所有必需域名

  4. Docker 环境检查 Docker 网络模式

  5. 配置包管理器加速源

4.3 APT 源配置失败

症状:apt-get update报 GPG 错误或仓库不可达。

排查:

# 检查 GPG 密钥 gpg --list-keys BF3B2D407FDEDEA0DC91CC9412640FBCB175287A # 查看 openUBMC APT 源文件 cat /etc/apt/sources.list.d/openubmc.list

正确内容应包含:

deb [arch=amd64 signed-by=/etc/apt/keyrings/openubmc.gpg] https://openubmc-apt-repo.obs.cn-north-4.myhuaweicloud.com/Ubuntu/ noble main

如密钥服务器不可达,可手动下载 GPG 文件(见 2.9 节)。

4.4 bingo 安装失败(libcurl4t64 版本冲突,历史问题)

适用范围:仅旧版本 init.py(经 apt 安装 openubmc-bingo deb)。新版 init.py 已改为 pip 安装 bingo 平台 Wheel 并执行bingo deps install,不再触发本问题;保留本节供旧环境排查。

症状:init.py 输出openubmc-bingo下载失败,请检查apt源是否配置成功,apt 安装 openubmc-bingo 报libcurl4-openssl-dev依赖冲突。

原因:安装git或curl会引入libcurl4t64包,Ubuntu 24.04 安全更新可能推送较新版本(如8.5.0-2ubuntu10.10),而openubmc-bingoapt 包依赖的libcurl4-openssl-dev要求精确匹配的版本(如8.5.0-2ubuntu10.9),apt 无法自动降级已安装包导致冲突。

排查与解决:

# 查看当前 libcurl4t64 版本和可用版本 apt policy libcurl4t64 # 方案一(推荐):显式指定版本同步安装,让 apt 自动降级 libcurl4t64 配合 libcurl4-openssl-dev apt install -y libcurl4t64=8.5.0-2ubuntu10.9 libcurl4-openssl-dev=8.5.0-2ubuntu10.9 # 方案二:单独降级 libcurl4t64,再由 init.py 安装 bingo 时自动装 libcurl4-openssl-dev apt install -y libcurl4t64=8.5.0-2ubuntu10.9 # 方案三:手动 pip 安装 bingo(旧版 init.py 的 pip fallback 因同一 try 块被跳过) pip install openubmc-bingo --upgrade

4.5 Conan 登录失败

症状:conan remote login返回认证错误。

排查:

  1. 确认社区账号已注册且用户名密码正确

  2. 密码含特殊字符时使用交互式输入,不传-user/-psw

  3. 确认网络可访问conan.openubmc.cn

  4. 清除缓存后重新配置远程仓库并登录:

    rm -rf ~/.conan2 conan remote add openubmc_opensource https://conan.openubmc.cn/openubmc_opensource --insecure --force conan remote login openubmc_opensource <你的社区用户名>

4.6 Node.js 安装失败

症状:n 20.18.0或npm install报错。

排查:

# 卸载旧版本 Node.js sudo apt-get remove -y nodejs npm # 检查磁盘空间 df -h # 确认 registry.npmmirror.com 可访问 curl -s -o /dev/null -w "%{http_code}" --max-time 5 https://registry.npmmirror.com

4.7 PATH 环境变量问题

症状:初始化完成后conan、n、bingo等命令提示command not found,但初始化过程无报错。

原因:工具安装到~/.local/bin,该系统默认不在 PATH 中。

解决:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc # 验证 which conan n bingo

4.8 权限不足

症状:Permission denied或写入/usr/bin、/etc/apt/目录失败。

解决:使用su root直接切换为 root 后执行,不要使用sudo python3 init.py。

4.9 命令执行超时

症状:某步骤长时间无响应(超时 600 秒),提示TimeoutExpired。

排查:

  1. 通常是网络下载慢导致,检查网络连接速度

  2. 开启调试日志定位卡点:

    LOG=debug python3 init.py
  3. 特定包下载慢时配置系统级代理或加速源

4.10 构建失败

症状:bingo build报错,产物未生成。

排查:

  1. 确认初始化已完成且无报错
  2. 检查 Conan 认证状态(最常见的构建失败原因):
    • bingo build需要从openubmc_opensource远程仓库拉取组件(26.06 版本的 SDK 包已合并到该远程中,不再需要单独的openubmc_sdk远程),若 Conan 凭证缺失或过期会报Remote needs authentication或ERROR: EOF when reading a line错误
    • 使用社区账号重新登录远程仓库:
      conan remote login openubmc_opensource <你的社区用户名> # 输入密码后验证 conan search --remote openubmc_opensource "*" 2>/dev/null | head -3
    • 若仍然失败,清除 Conan 缓存后重新登录:
      rm -rf ~/.conan2 conan remote add openubmc_opensource https://conan.openubmc.cn/openubmc_opensource --insecure --force conan remote login openubmc_opensource <你的社区用户名>
    • 社区账号即 openUBMC 用户中心 注册的账号,与 init.py 初始化时使用的账号相同
  3. 检查磁盘空间:df -h
  4. 检查内存和交换分区:free -h
  5. 检查网络连接是否正常
  6. 查看 bingo 构建日志定位具体错误:
    tail -50 /home/workspace/manifest/temp/log/task.log

4.11 未检测到 /opt/RTOS 目录

症状:执行bingo --version或bingo build时提示未检测到/opt/RTOS目录,请正确安装构建工具(可以manifest仓执行init.py或bingo build)。

原因:bingo 安装失败导致 init.py 的后续步骤(包括 SDK 安装)被跳过,/opt/RTOS目录未生成。最常见的 bingo 安装失败原因是libcurl4t64版本冲突(详见 4.4 bingo 安装失败)。

解决:

  1. 先按 4.4 节 修复 bingo 安装问题,确认 bingo 可正常执行:

    bingo --version
  2. 预设许可证自动接受(防止后续 init.py 的 SDK 安装步骤因许可证交互阻塞):

    export OPENUBMC_LICENSE=true
  3. 重新执行 init.py 完成 SDK 安装:

    cd /home/workspace/manifest python3 init.py -user <用户名> -psw '<密码>'
  4. 验证/opt/RTOS已生成:

    ls /opt/RTOS/ # 应输出版本号目录,如 208.11.0

第5章 其他开发特性

5.1 特性列表

以下开发特性不在本文档覆盖范围内,请参考对应文档获取详细指导:

特性说明参考文档
白牌包出包使用bingo wbd_build制作白牌升级包bingo支持白牌包出包.md
HPM 重签名使用bingo hpm_signer对 HPM 包进行外层 CMS 重签名bingo支持SignServer的HPM重签名适配.md
CCache 加速构建使用bingo build --ccache加速 C/C++ 编译bingo使能ccache特性.md
C++ 组件代码自动生成自动生成 Interface、Proxy、Data 等 C++ 代码C++组件代码自动生成开发指导.md
CSR 检查功能构建时执行 CSR(Change Summary Report)合规检查bingo支持CSR检查功能扩展详细设计说明书.md
固件完整性保护签名为固件添加完整性保护签名bingo支持固件完整性保护签名能力.md
SignServer CSR 整包签名通过 SignServer 完成 CSR 整包签名和 EEPROM ECC 签名[bingo支持SignServer的CSR整包签名和EEPROM ECC签名适配.md](https://gitcode.com/openUBMC/bingo/blob/main/docs/26.06/bingo支持SignServer的CSR整包签名和EEPROM ECC签名适配.md)
OEE 产品策略配置OEE 产品自定义工具链安装策略bingo支持OEE产品策略配置.md
组件批量定制通过 manifestdefault_options批量定制组件特性bingo支持组件批量定制.md
平台整包集成使用平台整包简化产品配置,避免组件版本冲突platform_full_package_integration_guide.md

本文档基于 openUBMC 社区文档编写,更详细的场景化指导请查阅https://www.openubmc.cn/docs/zh

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询