BMC 3.xx.xx.xx版本升级openubmc指导

摘要

BMC 3.xx.xx.xx版本可直接升级openubmc,第一次升级需要在出包时和升级后做一些操作,此后可以根据自己的选择(社区版本或伙伴自签名版本)来升级后续的版本,第一次升级失败报错或者升级后回退请联系pae。

流程

1.出包

a)默认用户名密码,出包时在manifest代码中对应manifest.yml中将account的option,改为manufacture: true

image
默认用户名密码为Administrator/openUBMC@2025
第一次升级后建议自行调整修改

b)第一次升级组件添加busybox,以方便升级后的ssl证书导入

参考 openUBMC调试工具安装指导

2.升级后导入ssl证书

升级后可以telnet到23端口
先通过date -s TIME设置当前时间,时间不对ssl证书会导入失败
后使用ipmcset -t certificate -d import -v /tmp/server.p12 1 123456(文件名和最后的密码参数按自己生成ssl证书的为准)
若提示找不到ipmcset命令,则先执行source /etc/profile

导入证书后可正常访问web,后续可正常升级自己开发的包。

26.03发布版本开始支持ssl内置,第一次升级无需手动导入 manifest目录build/product/BMC/openUBMC/rootfs /opt/bmc/trust/partner/ssl 放置密码为空的ssl证书文件出包即可

3.BMC 3.xx.xx.xx版本直升无签名构建前修改注意事项

manifest代码中的manifest.yml rootfs_BMC替换成rootfs_iBMC
/usr/share/bingo/hpm_header.config rootfs_BMC替换成rootfs_iBMC
找到本地bingo的python的lib路径。
例如/usr/local/lib/python3.12/dist-packages/
到bmcgo/tasks目录下,如cd /usr/local/lib/python3.12/dist-packages/bmcgo/tasks
执行
find . -type f -name “*.py” | xargs sed -i ‘s/BMC/iBMC/g’
进行批量替换

4. 自签名

如果选择使用自签名固件包,则后续只能升级该签名证书生成的hpm包
此包也可以从BMC 3.xx.xx.xx版本直接升级
参考 使用bingo进行自签名BMC固件包指导

问题反馈补充:

Q:为什么升级的时候会提示无效的升级包?(日志中提示tar 解压失败)

A:无论自签名还是无签名方式,从模组版本升级到社区版本都需要配置文件的加密流程,需要crypto_tool工具用于加密

在bingo的packethpm_ext4.sh文件中,会进行加密操作。

  1. 需要crypto_tool工具,工具获取方式待补充
  2. 需要修改出包配置

在manifest仓库的.bmcgo/config中添加如下配置

[hpm_encrypt]

enable=true

或者直接修改脚本,确保走到红框中加密的流程。

Q:升级的时候到67%左右卡住提示升级失败怎么处理?

A:修改方案参考上述新增步骤3BMC 3.xx.xx.xx版本直升无签名构建前修改注意事项

5 个赞

过渡版本升级伙伴自签名版本升级失败报错。
OpenUBMC2506 BMC固件升级失败 - 交流互助区 - openUBMC 论坛

陈工,我们用社区2506的代码和sdk, 只改了manifest.yml中account的option,成功出包;然后在v2上升级提示”无效的升级包“。
以前从v2到openUBMC,都是要先升级过渡包,直接用社区版本证书签名校验应该通不过吧。


v2升级过渡包一直是ok的

按照以上操作,提示无效的升级包。

按照以上操作,更新到67%报升级失败


串口终端报找不到rootfs_iBMC.img文件
这是什么原因

@rodrick

能否提供一下一键收集日志信息

一键收集日志已通过邮箱发送

@rodrick

出包的manifest目录下的temp路径里查找一下hpm_header.config这个文件,麻烦把里面内容发一下这个帖子里

示例(在manifest目录下执行):

find temp -name hpm_header.config

hpm_header.config内容:

//此配置文件与gpp_header强配合,对配置文件进行修改请谨慎
//GPP TOP Header的相关配置
//GPP_MAX_SIZE: 配置GPP的大小,各个固件的位置, SIZE和SITE单位byte
//FW_NUM: GPP分区包含固件个数
//BOOT_SITE: BOOT固件在HPM的位置
//BOOT_SIZE: BOOT固件的大小(单位byte)
//ROOTFS_Header_SITE: ROOTFS SUB Header在HPM的位置
//ROOTFS_Header_SIZE:ROOTFS SUB Header的大小(单位byte,如果为-1代表可变不写,0代码按文件计算大小)
GPP_MAX_SIZE                =      384
FW_NUM                      =      3
BOOT_NAME                   =      Hi1711_boot_4096.bin
BOOT_SITE                   =      512
BOOT_SIZE                   =      2097152
UBOOT_CMS_NAME              =      Hi1711_boot_pmode.bin
UBOOT_CMS_SITE              =      2097664
UBOOT_CMS_SIZE              =      1048576
ROOTFS_Header_NAME          =      rootfs_BMC.img
ROOTFS_Header_SITE          =      3146240
ROOTFS_Header_SIZE          =      -1

//ROOTFS SUB HEADER的相关配置
//如果有签名,填入签名文件路径
//没有签名文件,为NULL
VendorRootPubkCertPath      =      rootca.der
VendorCMSSignaturePath      =      rootfs_BMC.img.cms
VendorCRLPath               =      cms.crl
CustomerRootPubkCertPath    =      NULL
CustomerCMSSignaturePath    =      NULL
CustomerCRLPath             =      NULL
ROOTFSPath                  =      rootfs_BMC.tar.gz

@rodrick

解压文件的时候失败了

方便再提供下出的包吗?需要压缩分卷(20M)的形式发送到我的邮箱

你好,郭工,请问解决了吗,无效包的问题

你好,蒋工,请问下过渡包 是怎么来的呀?华为提供的还是自己本地编译出来的呀

百敖这边以前是在华为场内制作的过渡包,需要依赖场内环境;
半年前的事情了,现在的制作方式就没有太关注了啊…

当时按照帖子执行,提示无效包,就用过度包方式升级到自签名包了,没再关注过这个问题了。如果再有v2环境,我们再用2512试验下会在这个帖子反馈。

好的,感谢回复

好的,我这当前是iBMC V3的版本,应该和V2是类似的,我看其它帖子里提到需要有个crypto_tool的加密工具 来进行加密,请问下这个工具也是华为那边提供的吗?

没用过这个工具加密,可以问下华为接口人

嗯嗯,好的

你好,郭工,请问下方便提供一份 过渡包不,我在iBMC V3上试试能不能行,目前我在本地编译出来的了hpm的升级包(未签名),自签名得话 得需要未签名的uboot二进制文件(这个应该也是得找华为的相关接口人了),升级的时候也是提示无效的升级包。

过度包会导入每个公司自己的根公钥,升级完过度包,再升级自签名包(签名证书基于该根证书生成)才会成功,证书链校验才会通过。 过度包得每个公司自己到场内做。