【发布时间】:2019-09-18 18:30:43
【问题描述】:
我的目标是,
- 为所有需要的文件创建
sha256(进入.swu) - 使用
RSA算法签署sw-description文件。
我的.swu 包括:
- 内核映像 -
bzImage - 根文件系统 -
panther2-usb-panther2.ext4 - 软件描述文件-
sw-description - 安装后脚本 -
postinstall_swu.sh
我创建了一个脚本,它生成sha256 并签署sw-description。
这是脚本:
#!/bin/bash
IMAGES="bzImage panther2-usb-panther2.ext4"
FILES="sw-description sw-description.sig postinstall_swu.sh $IMAGES"
echo "Executing swu signing script..."
cp ../sw-description .
cp ../postinstall_swu.sh .
cp ../../../../../deploy/images/panther2/bzImage .
cp ../../../../../deploy/images/panther2/panther2-usb-panther2.ext4 .
read -d ' ' SHA_ROOTFS < <(sha256sum panther2-usb-panther2.ext4)
read -d ' ' SHA_BZIMAGE < <(sha256sum bzImage)
read -d ' ' SHA_POSTINSTALL < <(sha256sum postinstall_swu.sh)
sed -i ':a;N;$!ba; s/sha256 = "[0-9A-Za-z]*"/sha256 = '"\"${SHA_ROOTFS}"\"'/1' sw-description
sed -i ':a;N;$!ba; s/sha256 = "[0-9A-Za-z]*"/sha256 = '"\"${SHA_BZIMAGE}"\"'/2' sw-description
sed -i ':a;N;$!ba; s/sha256 = "[0-9A-Za-z]*"/sha256 = '"\"${SHA_POSTINSTALL}"\"'/3' sw-description
openssl dgst -sha256 -sign ../priv.pem -passin file:../passphrase sw-description > sw-description.sig
for i in $FILES;do
echo $i;done | cpio -ov -H crc > panther2-swu-$USER-devbuild.swu
cp panther2-swu-$USER-devbuild.swu ../../../../../deploy/images/panther2
上面的方法更好吗?
有没有办法让yocto/swupdate层为上述所有文件(sw-description除外)生成sha256并将这些生成的sha256添加到sw-description文件中?
我可以通过在我的配方文件中定义SWUPDATE_SIGNING 和SWUPDATE_PRIVATE_KEY 变量来签署sw-description,但是
如何生成
sha256?
【问题讨论】:
-
再次不要重新发明轮子,meta-swupdate 已经做得很好了。如果你想自己做,可以使用
bb.utils.sha256_filepython函数 -
你能告诉我我应该怎么做才能在 meta-swupdate 中启用
sha256生成,因为我在任何地方都找不到它。任何需要设置的配置或环境变量 -
我在您之前的帖子中添加了一条评论,提供了相关信息。
-
我浏览了这些链接,但在
sha256上没有找到任何东西,这让我发布了这个问题 -
也许this page 解释得更好。您只需在
sw-description中添加sha256 = "@panther2-usb-panther2.ext4";即可自动生成sha256,然后您需要在recipe 中添加SWUPDATE_SIGNING SWUPDATE_IMAGES SWUPDATE_IMAGES_FSTYPES变量。
标签: yocto sha256 software-update rsa-sha256