You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto构建签名SWU文件:sw-description缺失SHA256哈希的问题求助

解决Yocto构建SWU文件时sw-description缺失SHA256哈希值的问题

问题背景

使用Yocto/Bitbake为imx8mm-var-dart开发板构建签名SWU文件时,已成功生成签名后的SWU,但sw-description文件未自动添加镜像文件的SHA256哈希值,导致执行swupdate安装时触发哈希缺失错误。

现有环境结构

构建目录

build-dir
  +conf
     bblayers.conf
     local.conf

层目录

meta-variscite-fslc
  +conf
  +dynamic-layers
      +swupdate
         +swupdate
      +var-image-swu
         +imx8mm-var-dart
            sw-description
         update.sh
      swupdate_%d.bbappend
      var-image-swu.bb
      var-image-swupdate.bb

meta-mylayer
  +conf
     layer.conf
  +recipes-blahblah
  +wic
      my-wks.in

当前配置与错误

已完成配置

  1. 在build-dir/conf/local.conf指定自定义分区配置:
    WKS_FILE = "my-wks.in"
    
  2. 启用SWU签名并指定打包镜像:
    SWUPDATE_SIGNING = "RSA"
    SWUPDATE_PRIVATE_KEY = "/tmp/rsakey"
    SWUPDATE_IMAGES = "var-image-swupdate update.sh"
    
  3. 生成RSA密钥对:
    openssl genrsa -out /tmp/rsakey
    openssl rsa -in /tmp/rsakey -out /tmp/rsakey.pub -outform PEM -pubout
    

安装错误信息

执行SWU安装命令:

swupdate -i /var-image-swu-imx8mm-var-dart.swu --hwrevision "imx8mm-var-dart:1.0" --key /rsakey.pub

触发以下错误:

ERROR] : SWUPDATE failed [0] ERROR core/parser.c : check_missing_hash : 76 : Hash not set for var-image-swupdate-imx8mm-var-dart.tar.gz Type archive                          
[ERROR] : SWUPDATE failed [0] ERROR core/swupdate.c : install_from_file : 335 : failed to parse sw-description! 

解决方案:通过meta-mylayer的bbappend自动添加哈希

无需修改原meta-variscite-fslc层文件,仅需在自己的meta-mylayer中完成以下操作:

步骤1:创建sw-description模板文件

在meta-mylayer中创建路径dynamic-layers/swupdate/var-image-swu/imx8mm-var-dart/,并新建sw-description.template文件,参考原sw-description结构添加哈希变量占位:

software =
{
    version = "1.0";
    hardware-compatibility: [ "imx8mm-var-dart:1.0" ];
    files: (
        {
            filename: "${VAR_IMAGE_SWUPDATE_BASENAME}.tar.gz";
            sha256: "${VAR_IMAGE_SWUPDATE_SHA256}";
            type: "archive";
            device: "/dev/mmcblk2p2";
        },
        {
            filename: "update.sh";
            sha256: "${UPDATE_SH_SHA256}";
            type: "script";
        }
    );
}

提示:根据实际原sw-description的内容调整结构,确保变量占位符与文件名、字段匹配。

步骤2:创建var-image-swu.bbappend文件

在meta-mylayer的recipes-core/images目录(不存在则新建)下创建var-image-swu.bbappend,添加以下内容:

# 获取var-image-swupdate镜像的基础名称与SHA256值
VAR_IMAGE_SWUPDATE_BASENAME = "${@d.getVar('BPN', False, True).replace('var-image-swu', 'var-image-swupdate')}-${MACHINE}"
VAR_IMAGE_SWUPDATE_SHA256 = "${@bb.fetch2.get_sha256(os.path.join(d.getVar('DEPLOY_DIR_IMAGE'), VAR_IMAGE_SWUPDATE_BASENAME + '.tar.gz'), d)}"

# 计算update.sh的SHA256值
UPDATE_SH_SHA256 = "${@sha256sum(os.path.join(d.getVar('WORKDIR'), 'update.sh'))}"

# 替换模板生成带哈希的sw-description
do_configure_append() {
    cp ${THISDIR}/dynamic-layers/swupdate/var-image-swu/imx8mm-var-dart/sw-description.template ${WORKDIR}/sw-description.template
    bb.data.expandfile("${WORKDIR}/sw-description.template", "${WORKDIR}/sw-description", d)
}

步骤3:重新构建SWU文件

执行构建命令重新生成SWU:

bitbake var-image-swu

生成的SWU文件中,sw-description将自动包含各文件的SHA256哈希值,此时重新执行swupdate安装命令即可正常运行。


内容的提问来源于stack exchange,提问作者rosewater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:18:28