mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
In case both UBOOT_SIGN_ENABLE and UBOOT_ENV are enabled and
kernel-fitimage.bbclass is in use to generate signed kernel
fitImage, there is a circular dependency between uboot-sign
and kernel-fitimage bbclasses . The loop looks like this:
kernel-fitimage.bbclass:
- do_populate_sysroot depends on do_assemble_fitimage
- do_assemble_fitimage depends on virtual/bootloader:do_populate_sysroot
- virtual/bootloader:do_populate_sysroot depends on virtual/bootloader:do_install
=> The virtual/bootloader:do_install installs and the
virtual/bootloader:do_populate_sysroot places into
sysroot an U-Boot environment script embedded into
kernel fitImage during do_assemble_fitimage run .
uboot-sign.bbclass:
- DEPENDS on KERNEL_PN, which is really virtual/kernel. More accurately
- do_deploy depends on do_uboot_assemble_fitimage
- do_install depends on do_uboot_assemble_fitimage
- do_uboot_assemble_fitimage depends on virtual/kernel:do_populate_sysroot
=> do_install depends on virtual/kernel:do_populate_sysroot
=> virtual/bootloader:do_install depends on virtual/kernel:do_populate_sysroot
virtual/kernel:do_populate_sysroot depends on virtual/bootloader:do_install
Attempt to resolve the loop. Pull fitimage configuration options into separate
new configuration file image-fitimage.conf so these configuration options can
be shared by both uboot-sign.bbclass and kernel-fitimage.bbclass, and make use
of mkimage -f auto-conf / mkimage -f auto option to insert /signature node key-*
subnode into U-Boot control DT without depending on the layout of kernel fitImage
itself. This is perfectly valid to do, because the U-Boot /signature node key-*
subnodes 'required' property can contain either of two values, 'conf' or 'image'
to authenticate either selected configuration or all of images when booting the
fitImage.
For details of the U-Boot fitImage signing process, see:
https://docs.u-boot.org/en/latest/usage/fit/signature.html
For details of mkimage -f auto-conf and -f auto, see:
https://manpages.debian.org/experimental/u-boot-tools/mkimage.1.en.html#EXAMPLES
(From OE-Core rev: 259bfa86f384206f0d0a96a5b84887186c5f689e)
Fixes: 5e12dc911d0c ("u-boot: Rework signing to remove interdependencies")
Reviewed-by: Adrian Freihofer <adrian.freihofer@siemens.com>
(From OE-Core rev: d7bd9c6276611c8c8de0c2a24947783eae5d932a)
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
54 lines
1.7 KiB
Plaintext
54 lines
1.7 KiB
Plaintext
# Possible options for fitImage generation, mainly
|
|
# related to signing of the fitImage content.
|
|
|
|
# Description string
|
|
FIT_DESC ?= "Kernel fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
|
|
|
|
# Kernel fitImage Hash Algo
|
|
FIT_HASH_ALG ?= "sha256"
|
|
|
|
# Kernel fitImage Signature Algo
|
|
FIT_SIGN_ALG ?= "rsa2048"
|
|
|
|
# Kernel / U-Boot fitImage Padding Algo
|
|
FIT_PAD_ALG ?= "pkcs-1.5"
|
|
|
|
# Generate keys for signing Kernel fitImage
|
|
FIT_GENERATE_KEYS ?= "0"
|
|
|
|
# Size of private keys in number of bits
|
|
FIT_SIGN_NUMBITS ?= "2048"
|
|
|
|
# args to openssl genrsa (Default is just the public exponent)
|
|
FIT_KEY_GENRSA_ARGS ?= "-F4"
|
|
|
|
# args to openssl req (Default is -batch for non interactive mode and
|
|
# -new for new certificate)
|
|
FIT_KEY_REQ_ARGS ?= "-batch -new"
|
|
|
|
# Standard format for public key certificate
|
|
FIT_KEY_SIGN_PKCS ?= "-x509"
|
|
|
|
# Sign individual images as well
|
|
FIT_SIGN_INDIVIDUAL ?= "0"
|
|
|
|
FIT_CONF_PREFIX ?= "conf-"
|
|
FIT_CONF_PREFIX[doc] = "Prefix to use for FIT configuration node name"
|
|
|
|
FIT_SUPPORTED_INITRAMFS_FSTYPES ?= "cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.zst cpio.gz ext2.gz cpio"
|
|
|
|
# Allow user to select the default DTB for FIT image when multiple dtb's exists.
|
|
FIT_CONF_DEFAULT_DTB ?= ""
|
|
|
|
# length of address in number of <u32> cells
|
|
# ex: 1 32bits address, 2 64bits address
|
|
FIT_ADDRESS_CELLS ?= "1"
|
|
|
|
# Keys used to sign individually image nodes.
|
|
# The keys to sign image nodes must be different from those used to sign
|
|
# configuration nodes, otherwise the "required" property, from
|
|
# UBOOT_DTB_BINARY, will be set to "conf", because "conf" prevails on "image".
|
|
# Then the images signature checking will not be mandatory and no error will be
|
|
# raised in case of failure.
|
|
# UBOOT_SIGN_IMG_KEYNAME = "dev2" # keys name in keydir (eg. "dev2.crt", "dev2.key")
|