我正在尝试使用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