CPLD场外vme文件打包

前言

根据论坛中大佬回复,结合实际经验,汇总CPLD场外vme文件打包的流程。

环境准备

文件修改

  • 1.update.cfg
    如果有场内通过vme文件打包过CPLD的hpm升级包,那么将升级包刷入到机器上,在CPLD升级过程中,执行telnet将日志中提示的升级包临时目录/dev/shm/upgrade/XXXXXXXX/,复制到/tmp目录中(升级完会自动将文件清除)
    image
    参考复制出的update.cfg,可以直接进行替换,主要不同点在ComponentID、Updatefile、Uid字段,一般修改Uid字段即可,ComponentID可以参考如下链接。https://support.huawei.com/enterprise/zh/doc/EDOC1100078642/80b2be7f

如果没有场内打包的文件,具体固件的配置参数可以找PAE或sig-hardware了解。

  • 2.packet.sh
    • 2.1将脚本内的*.bin修改为*.vme
    • 2.2修改update_image_filelist函数
function update_image_filelist()
{
    local sha256val=$(sha256sum devkit.hpm | awk '{print $1}')
    cat <<EOF > image.filelist
Manifest Version: 1.0
Create By: openUBMC
Name: cpld_mf.hpm
SHA256-Digest: ${sha256val}
EOF
}
  • 3.重命名vme文件
    单CPLD需要将打包的vme文件重命名为cpld.vme,并放置在复制的csr_packet目录下。
    此处代码会进行拼接路径解析包,因此需要进行重命名。

文件打包和签名

执行如下命令

# 文件打包
packet.sh package . False
# 文件签名
packet.sh rebuild .

参考代码

2 个赞

你好,我想请问一下如何CPLD不需要签名的话,需要如何操作了?我们这边openUBMC是不签名版本的。现在改了一下packet.sh,将签名文件删除了,后面升级提示validate_sign.lua(353): cms file number or id wrong,

openUBMC是不签名版本,这个是指代社区版本的意思吗?执行packet.sh package . False生成的hpm包默认是没有签名的。后面的提示看着像是因为没有cms签名内容,具体细节不太清楚,不过hpm包里没有签名,校验应该不会通过的吧

我们现在用的是社区版本,不需要签名操作。我想问一下你指导中说的crldata.crl指的什么文件?是rootca.der还是signer.pem文件?

直接使用社区版本的话,还是要进行签名的,只不过这个签名是社区的签名(应该是这个路径下的文件build/product/ca),需要先拿到对应的签名文件,在根据论坛教程生成其他的一些文件,对应文件只需要对应上后缀,再重命名或者修改脚本为对应文件名

我们使用的CPLD厂家和华为的不同,也可以按照这种方式打包么?打包的时候有什么需要注意的么?

可以试试,区分一下是BMC自签名还是直接社区版本,如果社区版本可以参考一下CPLD场外打包疑问 - #26,来自 Tzyy_Q_wbdc2 这个帖子,会有所区别