快速上手是openUBMC的特色之一,在接下来的章节中,您将会逐渐地接触如何开发一些openUBMC中常见的场景。我们推荐根据如下的学习路线开展您的openUBMC之旅。
在本篇文档中,你将学习如何构建一个属于自己的bmc软件版本。
WARNING
在上手之前,请务必完成《环境准备》章节中的准备工作,避免因为环境配置错误导致无法继续。
升级验证
openUBMC的固件运行在真实的服务器基板上,需要完成hpm构建和升级。
构建hpm包
hpm包是openUBMC的升级包格式,在manifest使用bingo工具可以自动化完成openUBMC的hpm整包构建。
NOTE
这里假设 manifest 仓位于 /home/workspace/manifest;若不在该路径,请 cd 到你的实际路径。
cd /home/workspace/manifest
bingo build查看manifest/output文件夹下存在rootfs_openUBMC.hpm即为整包构建成功。
bingo build 参数说明
在 manifest 仓库执行 bingo build --help 可查看完整参数列表,常用参数如下:
| 参数 | 说明 |
|---|---|
-b, --board_name | 单板包,可选值为 `build/product/<Kunpeng |
-bt, --build_type | 构建类型,可选:debug(调试包)、release(正式包) |
--stage | 包类型,可选:dev(调试包)、rc(预发布包)、stable(发布包),默认 dev |
-t, --target | 构建目标,查看 build/target 目录,支持:install_sdk、personal、app、publish |
-v, --version | 构建版本号,不指定时从 manifest.yml 读取 |
-ucc, --update_conan_cache | 全量更新本地 conan 缓存 |
-r, --remote | conan 仓别名,可用 conan remote list 查看已配置的 conan 仓 |
--ccache | 使用 ccache 加速 C/C++ 编译 |
-z, --zip_code | 0502 编码,可选值参考单板 manifest.yml/manufacture |
-sc, --supporte_code | 待发布的 SupportE 编码,可选值参考单板 manifest.yml/tosupporte |
--signature_type | 固件签名类型,可选:rsa4096、sm2 |
--debug_platform_path | 联调整包路径 |
--deploy | 将 hpm 包部署至 bmc 设备 |
--verbose | 使能 conan 构建详细日志打印 |
推荐构建参数示例
日常开发构建个人 hpm 包(推荐):
shellcd /home/workspace/manifest bingo build -t personal -b openUBMC -bt release --stage rc构建发布包:
shellcd /home/workspace/manifest bingo build -t publish -b openUBMC -bt release --stage stable构建 debug 版本用于调试:
shellcd /home/workspace/manifest bingo build -t personal -b openUBMC -bt debug --stage rc使用 ccache 加速编译并全量更新 conan 缓存:
shellcd /home/workspace/manifest bingo build -t personal -b openUBMC -bt release --stage rc --ccache -ucc
构建产物统一输出到 manifest/output/ 目录下(如 output/rootfs_openUBMC.hpm、output/packet/<board>/*.zip、output/package.lock)。
固件签名机制
openUBMC 固件通过签名保障完整性与来源可信。构建时 bingo build 会根据单板 manifest.yml 中的 signature 配置对镜像进行 CMS 签名,并指定签名算法:
signature_type: rsa4096(RSA-4096,默认)或sm2,可通过bingo build --signature_type <rsa4096|sm2>指定。- 签名所用根证书、证书吊销列表(CRL)等由构建系统从单板
build/product/<board>/manifest.yml的signature.files配置复制到产物中,如rootca.der、rootca.crt、cms.crl。 - 生成的签名文件(如
rootfs_BMC.img.cms)随 HPM 包一并发布,供设备侧校验。
签名替代方案(本地/自建签名服务)
社区提供了本地自签名与自建签名服务器的 demo(见 bingo 仓库 demo/cms_sign 与 demo/ecc_sign),可用于功能演示与离线/白盒验证:
- CMS 签名(
demo/cms_sign):通过脚本自制 CA 根证书、签名证书、吊销列表与时间戳证书,并用sign_server.py在本地8098端口提供签名服务。签名与校验分别使用 bingo 提供的hpm_signer与hpm_verify工具。 - ECC 签名(
demo/ecc_sign):用于 EEPROM/设备描述 ECC 签名场景,通过脚本生成 ECC 密钥对device_desc_pubkey.bin与private_key.pem,并运行简易签名服务器。
使用方式(以 CMS 为例):
# 1. 准备待签名测试文件
dd if=/dev/random of=unsigned.img bs=1k count=1
# 2. 启动签名服务器(certs 为证书目录,abcd 为签名证书加密密码)
python3 sign_server.py -certs </xxx/yyy/certs> -sp abcd
# 3. 使用 bingo 简易签名命令对文件签名
bingo simple_sign -i unsigned.img -u http://localhost:8098/sign -s "abc-eg-h"对已构建的 HPM 包,也可使用 bingo hpm_signer 进行外层 CMS 重签名(支持本地证书模式与 SignServer 模式)。
WARNING
签名涉及公私钥,私钥泄露存在严重安全风险,根证书私钥与加密密钥应离线分人保存。上述 demo 仅用于功能演示,生产环境请结合实际进行完善与安全加固。
NOTE
上述签名/重签名能力为可选的发布增强特性,不影响基础整包构建与升级验证;如需深入了解,请参考 bingo 仓库 docs/26.06/ 下的签名适配文档。
升级hpm包
NOTE
本节演示 web 界面升级。openUBMC 也支持 CLI、Redfish、SNMP、IPMI 等升级方式,具体方法与参数见《固件升级》。
你可能需要联系贵司的环境管理员,使用IP连接真实环境,以IP为192.168.2.100为例,输入账号密码;
登录后首页点击openUBMC管理->固件升级;
点击固件更新->升级文件,上传升级包文件(生成目录为manifest/output/rootfs_openUBMC.hpm),点击开始升级;
已完成升级;
升级显示完成后,会进入重启流程,稍后web端会断开连接,等待重新连接后,可查看版本号(openUBMC管理->版本信息,如下图)检查主备版本号是否一致,不一致则升级成功;
验证openUBMC功能
你可以在浏览器中学习和了解openUBMC的webui功能,也可以使用ssh登录环境操作cli接口,或者使用ipmitool工具连接环境调用ipmi命令。