iBMC 与 openUBMC 均为 BMC 固件。iBMCv2、iBMCv3 是 iBMC 的不同代际版本,openUBMC 为社区版本。当需要在 iBMC 整机环境上开展 openUBMC 的构建、部署和调测时,需要将整机升级到 openUBMC。整机升级分为两种场景:iBMCv3 升级到 openUBMC 和 iBMCv2 升级到 openUBMC。两种场景都需要先升级过渡包,再升级 openUBMC 社区包。升级完成后,整机环境可用于后续的构建、部署和调测。
升级前准备
确认整机设备型号,记录当前 BMC 版本号
shellipmcget -d version准备串口线(RJ45 或 USB 转串口),连接 BMC 串口用于调试
准备网线连接 BMC 管理口,确保可 SSH 登录
准备 SSH/SFTP 客户端工具,用于登录 BMC 和上传升级包
准备过渡 HPM 包(联系 PAE 获取)
准备 openUBMC 社区包
rootfs_openUBMC.hpm:可从 openUBMC 官网 下载社区发行版,或参考一键出包 本地构建确保服务器供电稳定,升级过程中不可断电
确保 BMC 上
/tmp目录至少预留 100MB 空间shelldu -sh /tmp确保 BMC 空闲内存不低于 100MB,CPU 空闲率不低于 20%
shellfree -m top
iBMCv3 升级到 openUBMC
iBMCv3 无法直接升级到 openUBMC 社区包,需要先升级过渡包,再升级社区包。与 iBMCv2 升级相比,iBMCv3 无伙伴根证书兼容问题,且 26.03 及之后版本支持 SSL 证书内置。
出包
咨询 PAE 获取过渡包
联系 PAE 获取用于过渡升级的 HPM 包。
获取 openUBMC 社区包
从社区获取 rootfs_openUBMC.hpm 包,或本地构建 hpm 包。
升级
确认当前 V3 环境
ipmcget -d version
# 记录当前 Active 和 Available 分区版本号上传过渡包并升级
通过 SFTP 将 HPM 包上传到 BMC 的 /tmp 目录:
scp transition.hpm Administrator@<bmc_ip>:/tmp/也可通过 Web 界面“系统管理 → 固件升级”上传。上传前确保 /tmp 空间充足:
rm -rf /tmp/*.hpm /tmp/*.tmp执行升级:
ipmcset -d upgrade -v /tmp/transition.hpmBMC 固件升级完成后,默认自动重启使新版本生效。如未自动重启,请手动重启 BMC 使新版本生效。重启后执行 ipmcget -d version,预期 Active 分区版本号变为过渡包版本号。
确认过渡包升级成功
ipmcget -d version上传 openUBMC 社区包并升级
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 之前版本需要)
# 通过 SSH 登录 BMC
# 导入 SSL 证书(文件名和密码按自己生成的证书为准)
ipmcset -t certificate -d import -v /tmp/server.p12 1 12345626.03 及之后版本支持 SSL 内置,在 manifest 目录/build/product/BMC/openUBMC/rootfs/opt/bmc/trust/partner/ssl 下放置密码为空的 SSL 证书文件出包即可,无需手动导入。
自签名(可选)
如果选择使用自签名固件包,则后续只能升级该签名证书生成的 HPM 包。使用 bingo 进行自签名构建。
升级后验证
查看版本号确认升级成功
shellipmcget -d version # Active 分区版本号应等于升级包版本号 # Available 分区版本号为升级前的旧版本验证 Web 界面可正常访问
验证 SSH/串口登录正常
验证基本命令可用
shellipmcget -d ipinfo ipmcget -d powerstatus验证网络连通性
shellping <gateway_ip>
V3 升级常见问题
以下为 V3 升级过程中的高频问题,更多问题可参考升级管理常见问题(FAQ)。
升级卡住显示“请等待”
上一次升级被中断后触发了自愈机制,此时 app.log 中会出现 resume files(%s) exist and will be upgraded again 日志,表示检测到上次未完成的升级任务,系统会自动再次执行升级。解决方法:
systemctl restart bmc_core
rm -rf /data/upgrade_resume/reset/
systemctl restart bmc_core升级成功但版本号未变
升级实际成功,但新版本启动失败后自动回切到原分区。排查步骤:
- 通过串口查看启动日志,确认失败原因
- 查看 app.log,搜索
get current nvm_active,如果分区从nvm_temp变为nvm_active则说明升级失败回滚 - 常见原因:
- 组件服务启动检查失败 → 查看串口日志定位具体组件
- 安全启动拦截 → 需要清根操作
- 内存不足 → 清理文件后重启
升级报错:机型不匹配
日志显示 sys-uid not in update.cfg's ProductUIDList,说明升级包与当前环境机型不匹配。解决方法:
- 先尝试回滚:
ipmcset -d rollback - 构建过渡版本:修改 manifest 中 update.cfg 的 ProductID 为 65535(匹配所有机型),出包后先升级过渡包,再升级目标版本
升级包过旧
DowngradeAllowed=false:不允许降级
shellbusctl --user set-property bmc.kepler.bmc_upgrade \ /bmc/kepler/UpdateService/UpdateMgmt \ bmc.kepler.UpdateService.UpdateMgmt DowngradeAllowed b trueRevisionNumber 过大:日志显示
base version is not matched and cannot be allowed to upgrade
传包失败导致签名校验失败
/tmp 目录空间不足导致上传的包不完整:
rm -rf /tmp/*.hpm /tmp/*.tmp
# 重新上传升级包升级后网络不通
检查 IP,若不符合预期重新配置:
shellipmcset -d ipaddr -v <ip> <mask> <gateway>检查路由和防火墙规则:
shellroute -n iptables -t filter -nvL
iBMCv2 升级到 openUBMC
iBMCv2 无法直接升级到 openUBMC,需要先升级过渡包,再升级社区包。整体流程与 V3 升级类似,但 V2 有额外的签名兼容性问题需注意。
出包
出包步骤与“iBMCv3 升级到 openUBMC”的出包步骤相同,包括过渡包获取和社区包制作。
升级
升级流程与“iBMCv3 升级到 openUBMC”相同,分四步:
- 确认当前 V2 环境:执行
ipmcget -d version,记录当前 Active 和 Available 分区版本号 - 上传过渡包并升级:执行
ipmcset -d upgrade -v /tmp/transition.hpm,升级完成后 BMC 自动重启,重启后执行ipmcget -d version,预期 Active 分区版本号变为过渡包版本号 - 确认过渡包升级成功:执行
ipmcget -d version,确认 Active 分区版本号已更新为过渡包版本号 - 上传 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,当前版本无法升级。解决方法:使用镜像倒换功能切换到另一个分区版本,然后尝试升级。
ipmcset -d rollback老版本签名仅支持 PKCS 不支持 PSS
较老的 V2 版本签名只支持 PKCS 格式,不支持 PSS。需先升级到一个支持 PSS 的较新 V2 中间版本,再升级过渡包到 openUBMC。