整机环境搭建
更新时间: 2026/08/27
在Gitcode上查看源码

iBMC 与 openUBMC 均为 BMC 固件。iBMCv2、iBMCv3 是 iBMC 的不同代际版本,openUBMC 为社区版本。当需要在 iBMC 整机环境上开展 openUBMC 的构建、部署和调测时,需要将整机升级到 openUBMC。整机升级分为两种场景:iBMCv3 升级到 openUBMC 和 iBMCv2 升级到 openUBMC。两种场景都需要先升级过渡包,再升级 openUBMC 社区包。升级完成后,整机环境可用于后续的构建、部署和调测。

升级前准备

  • 确认整机设备型号,记录当前 BMC 版本号

    shell
    ipmcget -d version
  • 准备串口线(RJ45 或 USB 转串口),连接 BMC 串口用于调试

  • 准备网线连接 BMC 管理口,确保可 SSH 登录

  • 准备 SSH/SFTP 客户端工具,用于登录 BMC 和上传升级包

  • 准备过渡 HPM 包(联系 PAE 获取)

  • 准备 openUBMC 社区包 rootfs_openUBMC.hpm:可从 openUBMC 官网 下载社区发行版,或参考一键出包 本地构建

  • 确保服务器供电稳定,升级过程中不可断电

  • 确保 BMC 上 /tmp 目录至少预留 100MB 空间

    shell
    du -sh /tmp
  • 确保 BMC 空闲内存不低于 100MB,CPU 空闲率不低于 20%

    shell
    free -m
    top

iBMCv3 升级到 openUBMC

iBMCv3 无法直接升级到 openUBMC 社区包,需要先升级过渡包,再升级社区包。与 iBMCv2 升级相比,iBMCv3 无伙伴根证书兼容问题,且 26.03 及之后版本支持 SSL 证书内置。

出包

咨询 PAE 获取过渡包

联系 PAE 获取用于过渡升级的 HPM 包。

获取 openUBMC 社区包

从社区获取 rootfs_openUBMC.hpm 包,或本地构建 hpm 包。

升级

确认当前 V3 环境

shell
ipmcget -d version
# 记录当前 Active 和 Available 分区版本号

上传过渡包并升级

通过 SFTP 将 HPM 包上传到 BMC 的 /tmp 目录:

shell
scp transition.hpm Administrator@<bmc_ip>:/tmp/

也可通过 Web 界面“系统管理 → 固件升级”上传。上传前确保 /tmp 空间充足:

shell
rm -rf /tmp/*.hpm /tmp/*.tmp

执行升级:

shell
ipmcset -d upgrade -v /tmp/transition.hpm

BMC 固件升级完成后,默认自动重启使新版本生效。如未自动重启,请手动重启 BMC 使新版本生效。重启后执行 ipmcget -d version,预期 Active 分区版本号变为过渡包版本号。

确认过渡包升级成功

shell
ipmcget -d version

上传 openUBMC 社区包并升级

shell
scp rootfs_openUBMC.hpm Administrator@<bmc_ip>:/tmp/
ipmcset -d upgrade -v /tmp/rootfs_openUBMC.hpm

升级完成后 BMC 自动重启使新版本生效。重启后执行 ipmcget -d version,预期 Active 分区版本号变为 openUBMC 社区包版本号,Available 分区为升级前版本。

升级后操作

导入 SSL 证书(26.03 之前版本需要)

shell
# 通过 SSH 登录 BMC

# 导入 SSL 证书(文件名和密码按自己生成的证书为准)
ipmcset -t certificate -d import -v /tmp/server.p12 1 123456

26.03 及之后版本支持 SSL 内置,在 manifest 目录/build/product/BMC/openUBMC/rootfs/opt/bmc/trust/partner/ssl 下放置密码为空的 SSL 证书文件出包即可,无需手动导入。

自签名(可选)

如果选择使用自签名固件包,则后续只能升级该签名证书生成的 HPM 包。使用 bingo 进行自签名构建。

升级后验证

  1. 查看版本号确认升级成功

    shell
    ipmcget -d version
    # Active 分区版本号应等于升级包版本号
    # Available 分区版本号为升级前的旧版本
  2. 验证 Web 界面可正常访问

  3. 验证 SSH/串口登录正常

  4. 验证基本命令可用

    shell
    ipmcget -d ipinfo
    ipmcget -d powerstatus
  5. 验证网络连通性

    shell
    ping <gateway_ip>

V3 升级常见问题

以下为 V3 升级过程中的高频问题,更多问题可参考升级管理常见问题(FAQ)

升级卡住显示“请等待”

上一次升级被中断后触发了自愈机制,此时 app.log 中会出现 resume files(%s) exist and will be upgraded again 日志,表示检测到上次未完成的升级任务,系统会自动再次执行升级。解决方法:

shell
systemctl restart bmc_core
rm -rf /data/upgrade_resume/reset/
systemctl restart bmc_core

升级成功但版本号未变

升级实际成功,但新版本启动失败后自动回切到原分区。排查步骤:

  1. 通过串口查看启动日志,确认失败原因
  2. 查看 app.log,搜索 get current nvm_active,如果分区从 nvm_temp 变为 nvm_active 则说明升级失败回滚
  3. 常见原因:
    • 组件服务启动检查失败 → 查看串口日志定位具体组件
    • 安全启动拦截 → 需要清根操作
    • 内存不足 → 清理文件后重启

升级报错:机型不匹配

日志显示 sys-uid not in update.cfg's ProductUIDList,说明升级包与当前环境机型不匹配。解决方法:

  1. 先尝试回滚:ipmcset -d rollback
  2. 构建过渡版本:修改 manifest 中 update.cfg 的 ProductID 为 65535(匹配所有机型),出包后先升级过渡包,再升级目标版本

升级包过旧

  1. DowngradeAllowed=false:不允许降级

    shell
    busctl --user set-property bmc.kepler.bmc_upgrade \
      /bmc/kepler/UpdateService/UpdateMgmt \
      bmc.kepler.UpdateService.UpdateMgmt DowngradeAllowed b true
  2. RevisionNumber 过大:日志显示 base version is not matched and cannot be allowed to upgrade

传包失败导致签名校验失败

/tmp 目录空间不足导致上传的包不完整:

shell
rm -rf /tmp/*.hpm /tmp/*.tmp
# 重新上传升级包

升级后网络不通

  1. 检查 IP,若不符合预期重新配置:

    shell
    ipmcset -d ipaddr -v <ip> <mask> <gateway>
  2. 检查路由和防火墙规则:

    shell
    route -n
    iptables -t filter -nvL

iBMCv2 升级到 openUBMC

iBMCv2 无法直接升级到 openUBMC,需要先升级过渡包,再升级社区包。整体流程与 V3 升级类似,但 V2 有额外的签名兼容性问题需注意。

出包

出包步骤与“iBMCv3 升级到 openUBMC”的出包步骤相同,包括过渡包获取和社区包制作。

升级

升级流程与“iBMCv3 升级到 openUBMC”相同,分四步:

  1. 确认当前 V2 环境:执行 ipmcget -d version,记录当前 Active 和 Available 分区版本号
  2. 上传过渡包并升级:执行 ipmcset -d upgrade -v /tmp/transition.hpm,升级完成后 BMC 自动重启,重启后执行 ipmcget -d version,预期 Active 分区版本号变为过渡包版本号
  3. 确认过渡包升级成功:执行 ipmcget -d version,确认 Active 分区版本号已更新为过渡包版本号
  4. 上传 openUBMC 社区包并升级:执行 ipmcset -d upgrade -v /tmp/rootfs_openUBMC.hpm,升级完成后 BMC 自动重启,重启后预期 Active 分区版本号变为 openUBMC 社区包版本号

V2 特有的伙伴根证书、签名格式等注意事项见本文档“V2 升级常见问题”章节。

升级后操作

与“iBMCv3 升级到 openUBMC”的升级后操作相同,包括 SSL 证书导入和自签名配置。

升级后验证

与“iBMCv3 升级到 openUBMC”的升级后验证相同。

V2 升级常见问题

V2 升级除可能遇到 V3 的常见问题外,还有以下特有问题:

缺乏伙伴根证书导致签名校验失败

日志显示 partner_cert is NULL,当前版本无法升级。解决方法:使用镜像倒换功能切换到另一个分区版本,然后尝试升级。

shell
ipmcset -d rollback

老版本签名仅支持 PKCS 不支持 PSS

较老的 V2 版本签名只支持 PKCS 格式,不支持 PSS。需先升级到一个支持 PSS 的较新 V2 中间版本,再升级过渡包到 openUBMC。