0

我正在尝试创建一个自定义配方来签署从 u-boot.bb 生成的 u-boot 映像。

我有 2 个自定义食谱:

1. u-boot.bb - clones, compiles and deploys u-boot resulting u-boot.elf.
2. u-boot-sign.bb - depends on u-boot.bb. Gets u-boot.elf, passes it through
                    custom signing procedure and deploys the result.

对于签名,我被迫使用位于外部存储库中的 python 脚本形式的自定义过程。

导致问题的部分是从 u-boot.bb 配方访问已部署的 u-boot.elf 二进制文件。我找不到将 u-boot.elf 二进制文件公开给 u-boot-sign.bb 配方的方法。

从一个配方中公开图像二进制文件以在另一个配方中访问、签名和部署的正确方法应该是什么?

4

1 回答 1

0

为了在配方之间和交叉编译范围之间共享文件,我${datadir}在安装二进制文件时使用(通过do_install)。这使我可以访问FILES:${PN}via描述的所有文件recipe-sysroot

u-boot.bb- 导出配方:

…
do_install() {
    install -d ${D}${datadir}/u-boot-2016/
    install -m 0644 ${B}/${UBOOT_ELF_BINARY} ${D}${datadir}/u-boot-2016
}

FILES:${PN} = "${datadir}/u-boot-2016"
…

u-boot-sign.bb- 取决于食谱

…
DEPENDS += " u-boot python3-native"

do_sign() {
    ${STAGING_BINDIR_NATIVE}/python3-native/python3 sign.py \
                -i ${RECIPE_SYSROOT}${datadir}/u-boot-2016/${UBOOT_ELF_BINARY}

}
…

灵感来自这里

编辑

有人建议我不要使用${datadir}. /firmware对于中间文件,更好的方法是使用meta-arm.

u-boot.bb- 导出配方:

…
do_install() {
    install -D -p -m 0644 ${B}/${UBOOT_ELF_BINARY} ${D}/firmware/${UBOOT_ELF_BINARY}
}

FILES:${PN} = "/firmware"
SYSROOT_DIRS += "/firmware"
…

u-boot-sign.bb- 取决于食谱

…
DEPENDS += " u-boot python3-native"

do_sign() {
    ${STAGING_BINDIR_NATIVE}/python3-native/python3 sign.py \
                -i ${RECIPE_SYSROOT}/firmware/u-boot-2016/${UBOOT_ELF_BINARY}
}
…

它还需要添加/firmwareSYSROOT_DIRS.

于 2021-11-29T15:24:57.130 回答