在开始使用 openUBMC 之前,您需要先完成开发环境的快速搭建,包括操作系统安装、网络配置和初始化配置。
系统环境要求
| 环境项 | 环境要求 |
|---|---|
| 操作系统 | Ubuntu 24.04(可通过 Docker、虚拟机、WSL 或云主机获取) |
| 芯片组 | x86-64 |
| 内存 | 至少 16GB(Windows 虚拟机建议 32GB) |
| 交换分区 | 建议 32GB |
| 磁盘空间 | 建议至少 64GB 可用空间 |
| 网络 | 需连接网络以下载依赖和访问社区资源 |
操作系统安装
openUBMC 社区开发环境仅支持 Ubuntu 24.04 操作系统,Windows 用户可在 PC 上直接安装 Ubuntu,也可通过虚拟机或 WSL 部署 Ubuntu 环境,或者使用 Docker 部署 Ubuntu 容器。
如果您已安装 Ubuntu 24.04 环境,请跳过此环节;如果还没有,请参考《开发环境准备》进行操作系统安装。
IMPORTANT
如已安装 conda 等环境管理器,请确保配置正确。可执行 pip3 install conan>=2.0.0 安装 conan,再运行 conan 验证。
网络配置
初始化及运行过程需要访问以下在线资源,需要确保网络连通。
- mirrors.huaweicloud.com - 华为云镜像
- registry.npmmirror.com - npm 淘宝镜像
- openubmc-apt-repo.obs.cn-north-4.myhuaweicloud.com - openUBMC apt 仓库
- keyserver.ubuntu.com - Ubuntu GPG keyserver
- conan.openubmc.cn - openUBMC conan 仓库
- repo.openubmc.cn - openUBMC 工具仓库
在终端中运行以下命令检查连通性。
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"
do
echo -n "$url: "
curl -s -o /dev/null -w "%{http_code}\n" --max-time 5 "$url"
done如果结果返回值为 200,即为正常连通,否则请参考《常见问题》的“网络相关失败”章节配置网络或防火墙。
GitCode 配置(可选)
openUBMC 社区使用 GitCode 管理代码,如果您需要为社区提交代码:
请完成 GitCode SSH 密钥配置。
注册并绑定邮箱,之后在终端中配置本地 git。
git config --global user.name <your username>
# 邮箱务必与 CLA 签署地址一致
git config --global user.email <your email>IMPORTANT
提交 PR 时,CI 会基于 git config 的邮箱校验 CLA 签署状态,请确保邮箱一致。
开发环境初始化
启动Root用户
请以 root 用户 登录 Ubuntu 24.04 系统完成以下初始化。
WARNING
必须使用 root 身份执行初始化,否则可能因权限不足导致环境初始化失败,现有配置不支持通过sudo命令仅使用root权限执行。
请使用 su root 切换(不要使用 sudo su)。部分云厂商会修改 apt 源文件,如遇APT访问问题,请检查 /etc/apt/sources.list.d/ubuntu.sources。
配置交换分区(可选,建议)
openUBMC 组件数量较多,编译过程内存占用大(系统要求建议交换分区 32GB)。物理内存不足时,可通过创建 swap 文件配置交换分区,避免编译期间因 OOM 被杀进程。
TIP
Docker 场景推荐使用交换分区:容器默认不限制内存,编译容器(如 bingo 并行构建)内存峰值高,一旦宿主机内存耗尽会触发 OOM 直接杀掉容器导致编译中断。配置 swap 后,未设置内存上限的容器默认即可使用宿主 swap,内存不足时自动兜底,避免容器被 OOM kill。仅当容器显式设置了内存上限(-m)时,才需额外设置 --memory-swap=-1 才允许容器使用宿主 swap。
通过下面的命令检查当前Swap交换分区大小,系统要求建议交换分区 32GB:
free -h检查运行中的容器是否设置了内存上限:
# 返回 0 表示未限制,返回具体数值(字节)表示已设置上限
docker inspect <容器名> --format '{{.HostConfig.Memory}}'
# 或用 docker stats 查看内存 LIMIT 列
docker stats <容器名>以创建 4 个 8GB swap 文件(共 32GB)为例:
# 创建 4 个 8GB swap 文件并启用
for i in 1 2 3 4; do
sudo dd if=/dev/zero of=/swapfile${i} bs=1M count=8192
sudo chmod 600 /swapfile${i}
sudo mkswap /swapfile${i}
sudo swapon /swapfile${i}
doneTIP
swap 文件路径和大小可按磁盘空间调整,建议放在空间充足的分区。
swapon 仅在当前会话生效,重启后失效。需写入 /etc/fstab 持久化,开机自动挂载:
for i in 1 2 3 4; do
echo "/swapfile${i} none swap sw 0 0" | sudo tee -a /etc/fstab
done验证配置是否生效:
sudo swapon -a
swapon --show
free -hswapon --show 能列出 4 个 swap 文件即配置成功,再用 free -h 确认 Swap 总容量为 32G。
NOTE
swap 本质是磁盘空间,仅用于运行时内存(RAM)耗尽时存放暂时用不到的内存页,性能远低于物理内存。只有 RAM 和 swap 全部用尽时,系统才会触发 OOM 杀掉进程。磁盘空间充足的场景建议优先扩充物理内存(运行时内存)(如加装内存条、WSL 上调大 .wslconfig 的 memory=),使编译进程尽可能运行在 RAM 中;若希望编译进程少用 swap(避免变慢),可通过调低 vm.swappiness 减少 swap 使用。
使用manifest一键初始化
使用 manifest 仓库 完成一键环境初始化,manifest 仓库是构建的入口,管理所有子仓库的版本依赖和构建策略。
克隆 manifest 仓库。
shellmkdir -p /home/workspace && cd /home/workspace git clone https://gitcode.com/openUBMC/manifest.git cd manifest git checkout 26.09_2026.09.30准备openUBMC社区账号,初始化过程中需要输入社区账号用户名和密码,同Conan账号。
如已有账号可直接使用,没有则先到openUBMC社区账号注册页面进行注册。
预设许可证自动接受:
shell# 设置环境变量,让 init.py 自动接受许可证 export OPENUBMC_LICENSE=true执行初始化。 需指定 Conan 用户名和密码,同openUBMC社区用户名和密码,(
<用户名>为注册时绑定的手机号或自定义用户名),也可在初始化过程中按提示输入。shell# 确保当前在 /home/workspace/manifest 目录 python3 init.py -user <用户名> -psw '<密码>'
至此,环境搭建完成。
问题排查
许可证交互确认
在无终端的 Docker 容器环境中,init.py 的 install_sdk 步骤及 bmc-studio 安装均需交互式确认许可证协议,会导致 EOF 错误或安装失败。解决方法:
设置环境变量自动接受许可证,避免交互式确认:
bashexport OPENUBMC_LICENSE=true export AUTO_ACCEPT_LICENSE=true echo 'Y' | python3 init.py -user <用户名> -psw '<密码>'若 init.py 因许可证问题中断导致
install_sdk未完成,可单独补执行:bashecho 'Y' | bingo build -t install_sdk -b openUBMC -ucc若 bmc-studio 安装中断,先预设许可证接受再修复:
bashecho 'bmc-studio bmc-studio/accept-license boolean true' | debconf-set-selections DEBIAN_FRONTEND=noninteractive dpkg --configure bmc-studio
其他问题排查
初始化可能因网络、代理、权限、SDK版本等原因失败。遇到问题请参考《常见问题》进行排查处理。
完成后请参考《构建你的BMC》开始开发。