openUBMC开发环境准备和搭建完成之后,您需要对开发环境进行网络配置和初始化,才能使用该环境进行开发。
前提条件
已完成《开发环境搭建》。
网络配置
清理网络代理配置(可选)
如果配置了不需要的代理,请在初始化前执行清理:
shellunset https_proxy && unset HTTPS_PROXY如果在公司内网环境,请确认防火墙放行下方检查网络连通性部分中列出的域名。
如果使用 Docker 环境,检查 Docker 网络模式是否正确配置。
如果你访问的软件源慢,建议配置包管理器加速源,可以参考云厂商或各大学提供的加速源。
检查网络连通性
初始化及运行过程需要访问以下在线资源:
- 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,即为正常连通,否则请参考《常见问题》的“网络相关失败”章节配置网络或防火墙。
配置网络代理(可选)
如果您处于受限的内部网络环境,或需要通过代理服务器才能访问外网资源,请在 WSL 终端中配置环境变量。
临时生效(仅当前终端会话):
export http_proxy="http://<您的代理服务器IP>:<端口>"
export https_proxy="http://<您的代理服务器IP>:<端口>"永久生效(写入环境变量):
echo 'export http_proxy="http://<您的代理服务器IP>:<端口>"' >> ~/.bashrc
echo 'export https_proxy="http://<您的代理服务器IP>:<端口>"' >> ~/.bashrc
source ~/.bashrc提示: 如果配置代理后仍然提示 Could not resolve host,通常是 WSL 的 DNS 解析异常。请尝试修改 /etc/resolv.conf 为可用 DNS。
GitCode 配置
GitCode 账户配置
openUBMC 社区使用 GitCode 管理代码,如果您需要为社区提交代码,请完成注册并绑定邮箱,之后在终端中配置本地 git:
git config --global user.name <your username>
# 邮箱务必与 CLA 签署地址一致
git config --global user.email <your email>IMPORTANT
提交 PR 时,CI 会基于 git config 的邮箱校验 CLA 签署状态,请确保邮箱一致。
SSH Key生成与添加
使用以下命令生成ssh密钥:
shellssh-keygen -t rsa按回车确定,直到完成生成,生成的公钥在
~/.ssh/id_rsa.pub里。通过以下命令用vi打开,并复制公钥,完成后按Esc,并输入
:q退出编辑器。shellvi ~/.ssh/id_rsa.pub在GitCode中添加公钥。
a. 打开右上角头像下拉菜单,单击个人设置。
b. 在左侧选择安全设置 > SSH公钥。
c. 单击右上角的SSH公钥,并将上一步复制的公钥粘贴在下方公钥栏中。
单击新建,完成SSH Key创建。
仓库访问权限验证
访问manifest仓库主页确认访问权限,成功打开仓库页面即有正常访问权限。
开发环境初始化
启动Root用户
WARNING
必须使用 root 身份执行初始化,否则可能因权限不足导致环境初始化失败,现有配置不支持通过sudo命令仅使用root权限执行。
请以 root 用户 登录 Ubuntu 24.04 系统完成以下初始化,下面列出两种可行的启动方式:
使用
su root切换(不要使用sudo su)。部分云厂商会修改 apt 源文件,如遇APT访问问题,请检查/etc/apt/sources.list.d/ubuntu.sources。切换为默认root身份:
使用当前的Ubuntu终端输出
echo -e "[boot]\nsystemd = true\n\n[user]\ndefault = root" | sudo tee /etc/wsl.conf,将默认用户配置为 root。之后关闭Ubuntu终端,在PowerShell或CMD命令提示符中使用
wsl --shutdown命令彻底关闭WSL。再次重启Ubuntu将默认使用 root 身份。
配置交换分区(可选,建议)
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如果本地已有 manifest 代码,请先同步最新代码:
shellcd /home/workspace/manifest git pull -r origin main准备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 版本等原因失败,如果遇到问题请参考《常见问题》进行排查处理。