sw描述文件未获取sha256



我正在尝试使用yocto/bitbake为我的板构建一个签名的swu文件。创建的swu已签名,但在sw描述文件中没有设置sha256。

(下面省略了一些文件夹和文件,显示了相关的目录树(

我的yocto:构建目录

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

通过将其添加到我的构建目录/conf/local.conf

WKS_FILE = "my-wks.in"

我可以让它使用my-wks.in(按照我的意愿设置分区(。

然后将这些添加到我的构建目录/conf/local.conf 中

SWUPDATE_SIGNING = "RSA"
SWUPDATE_PRIVATE_KEY = "/tmp/rsakey"
SWUPDATE_IMAGES = "var-image-swupdate update.sh"

使其创建一个swu文件(var-image-swu-imx8mm-var-dart.swu(

我生成了这样的密钥:

openssl genrsa -out /tmp/rsakey
openssl rsa -in /tmp/rsakey -out /tmp/rsakey.pub -outform PEM -pubout

但是当我查看swu文件内部时,我没有看到图像文件的sha256。当我尝试安装这个swu时,我得到了这个错误:

swupdate-i/var-image-swu-imx8mm-var-dart.swu-hwrevision";imx8mm var省道: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! 

很明显,sha256哈希丢失了,我该如何将其添加到我的sw描述文件中?

我试着按照这里的步骤操作,但我不知道该怎么做才能用sha256哈希更新我的sw描述文件。

注意,我可以在这里手动编辑软件描述文件

meta-variscite-fslc
+conf
+dynamic-layers
+swupdate
+swupdate
+var-image-swu
+imx8mm-var-dart
sw-description

并添加sha256散列,然后成功生成的swu就安装好了。但我不想编辑该层中的文件,我可能需要在我的层中添加一些东西

完成使更新对我有效的步骤:

在我的层中,添加文件,保持与我覆盖的层相同的文件夹结构:

meta-mylayer
+conf
layer.conf          # add BBFILES, see below
+dynamic-layers
+sw-update
+var-image-swu
+imx8mm-var-dar
sw-description       # <-- file I want to replace with my own 
update.sh               # <-- file I want to replace with my own 
var-image-swu.bbappend    # <-- overrides the recipe   
meta-variscite-fslc
+conf
+dynamic-layers
+sw-update
+var-image-swu
+imx8mm-var-dart
sw-description   # <-- need to overide this file
update.sh      # <-- need to overide this file
var-image-swu.bb        # <--original recipe

var-image-swu.bbappend:

#
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI = " 
file://sw-description 
file://update.sh 
"
##

layer.conf:

#
BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb  
${LAYERDIR}/recipes-*/*/*.bbappend 
${LAYERDIR}/dynamic-layers/*/*.bbappend"    # <-- add this path to search for bbappend files
##

我的软件描述文件:

software =
{
version = "0.1.0";
imx8mm-var-dart = {
hardware-compatibility: [ "1.0" ];
files: (
{
filename = "var-image-swupdate-imx8mm-var-dart.tar.gz";
type = "archive";
compressed = true;
device = "/dev/update";
filesystem = "ext4";
preserve-attributes = true;
sha256 = "@var-image-swupdate-imx8mm-var-dart.tar.gz";      # <-- add this line
path = "/";
}
)
scripts: (
{
filename = "update.sh";
type = "shellscript";
sha256 = "@update.sh";                      # <-- add this line
}
);
};
}
#

build/conf/local.conf

#
WKS_FILE = "nextgen.wks.in"
SWUPDATE_SIGNING = "RSA"
SWUPDATE_PRIVATE_KEY = "/tmp/rsakey"        # <-- see below for genertation of private key
SWUPDATE_IMAGES = "var-image-swupdate-imx8mm-var-dart update.sh sw-description.sig" # <-- these 3 files are in the swu payload, hashes will get gernated and @filename will be replaced with hash
#

在目标设备上,要更新:

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

(将swu文件和公钥复制到/dir后(

密钥是在像这样的主机上生成的

openssl genrsa -out /tmp/rsakey
openssl rsa -in /tmp/rsakey -out /tmp/rsakey.pub -outform PEM -pubout

然后公钥被传送到目标设备

您应该使用以下语法将sha265属性自己添加到sw-description文件中:

sha256 = "@artifact-file-name";

另请参阅:https://sbabic.github.io/swupdate/building-with-yocto.html#automatic-软件描述中的sha256

最新更新