From: Quirin Gylstorff The new swupdate round robin handler is available under[1]. Add the Option `SWUPDATE_USE_ROUND_ROBIN_HANDLER_REPO` to use the handler directly from the repository. The handler currently doesn't support secureboot. [1]:https://gitlab.com/cip-playground/swupdate-handler-roundrobin/ Signed-off-by: Quirin Gylstorff --- classes/swupdate-config.bbclass | 12 ++++++--- kas/opt/ebg-secure-boot-base.yml | 3 +++ .../files/secure-boot/sw-description.tmpl | 2 +- recipes-core/images/files/sw-description.tmpl | 21 ++++++++++----- .../files/swupdate.handler.efibootguard.ini | 26 +++++++++++++++++++ recipes-core/swupdate/swupdate.bb | 9 ++++++- 6 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 recipes-core/swupdate/files/swupdate.handler.efibootguard.ini diff --git a/classes/swupdate-config.bbclass b/classes/swupdate-config.bbclass index 8ec1104..e425aa2 100644 --- a/classes/swupdate-config.bbclass +++ b/classes/swupdate-config.bbclass @@ -21,9 +21,17 @@ KFEATURE_lua = "" KFEATURE_lua[BUILD_DEB_DEPENDS] = "liblua5.3-dev" KFEATURE_lua[KCONFIG_SNIPPETS] = "file://swupdate_defconfig_lua.snippet" +SWUPDATE_USE_ROUND_ROBIN_HANDLER_REPO ?= "1" + +SRC_URI_append = " ${@ 'git://gitlab.com/cip-playground/swupdate-handler-roundrobin.git;protocol=https;destsuffix=swupdate-handler-roundrobin;name=swupdate-handler-roundrobin' \ + if d.getVar('SWUPDATE_USE_ROUND_ROBIN_HANDLER_REPO') == '1' else '' \ + }" +SRCREV_swupdate-handler-roundrobin ?= "6ac9e49eaa4e866a3eda12eee3a223820ba8e0bf" +SWUPDATE_LUASCRIPT ?= "swupdate-handler-roundrobin/swupdate_handlers_roundrobin.lua" KFEATURE_luahandler = "" KFEATURE_luahandler[KCONFIG_SNIPPETS] = "file://swupdate_defconfig_luahandler.snippet" -KFEATURE_luahandler[SRC_URI] = "file://${SWUPDATE_LUASCRIPT}" +KFEATURE_luahandler[SRC_URI] = "${@ 'file://${SWUPDATE_LUASCRIPT}' \ + if d.getVar('SWUPDATE_USE_ROUND_ROBIN_HANDLER_REPO') == '0' else '' }" KFEATURE_DEPS = "" KFEATURE_DEPS[luahandler] = "lua" @@ -58,8 +66,6 @@ KFEATURE_u-boot[DEBIAN_DEPENDS] = "${@ 'libubootenv0.1, u-boot-${MACHINE}-config KFEATURE_u-boot[DEPENDS] = "${SWUPDATE_U_BOOT} libubootenv" KFEATURE_u-boot[KCONFIG_SNIPPETS] = "file://swupdate_defconfig_u-boot.snippet" -SWUPDATE_LUASCRIPT ?= "swupdate_handlers.lua" - def get_bootloader_featureset(d): bootloader = d.getVar("SWUPDATE_BOOTLOADER", True) or "" if bootloader == "efibootguard": diff --git a/kas/opt/ebg-secure-boot-base.yml b/kas/opt/ebg-secure-boot-base.yml index 30ca35a..484d0e5 100644 --- a/kas/opt/ebg-secure-boot-base.yml +++ b/kas/opt/ebg-secure-boot-base.yml @@ -16,3 +16,6 @@ local_conf_header: initramfs: | IMAGE_INSTALL += "initramfs-abrootfs-secureboot" SWU_DESCRIPTION = "secureboot" + swupdate-secureboot: | + SWUPDATE_USE_ROUND_ROBIN_HANDLER_REPO = "0" + SWUPDATE_LUASCRIPT = "swupdate_handler.efibootguard.secureboot.lua" diff --git a/recipes-core/images/files/secure-boot/sw-description.tmpl b/recipes-core/images/files/secure-boot/sw-description.tmpl index bce97d0..897d819 100644 --- a/recipes-core/images/files/secure-boot/sw-description.tmpl +++ b/recipes-core/images/files/secure-boot/sw-description.tmpl @@ -16,7 +16,7 @@ software = filename = "${ROOTFS_PARTITION_NAME}"; device = "fedcba98-7654-3210-cafe-5e0710000001,fedcba98-7654-3210-cafe-5e0710000002"; type = "roundrobin"; - compressed = "true"; + compressed = "zlib"; filesystem = "ext4"; }); files: ({ diff --git a/recipes-core/images/files/sw-description.tmpl b/recipes-core/images/files/sw-description.tmpl index bb34088..3309271 100644 --- a/recipes-core/images/files/sw-description.tmpl +++ b/recipes-core/images/files/sw-description.tmpl @@ -16,21 +16,30 @@ software = filename = "${ROOTFS_PARTITION_NAME}"; device = "fedcba98-7654-3210-cafe-5e0710000001,fedcba98-7654-3210-cafe-5e0710000002"; type = "roundrobin"; - compressed = "true"; + compressed = "zlib"; filesystem = "ext4"; + properties: { + subtype = "image"; + }; }); files: ({ filename = "${KERNEL_IMAGE}"; path = "vmlinuz"; - type = "kernelfile"; - device = "sda2,sda3"; + type = "roundrobin"; + device = "fedcba98-7654-3210-cafe-5e0710000001->sda2,fedcba98-7654-3210-cafe-5e0710000002->sda3"; filesystem = "vfat"; + properties: { + subtype = "kernel"; + }; }, { filename = "${INITRD_IMAGE}"; - path = "initrd.img"; - type = "kernelfile"; - device = "sda2,sda3"; + path = "${INITRD_IMAGE}"; + type = "roundrobin"; + device = "fedcba98-7654-3210-cafe-5e0710000001->sda2,fedcba98-7654-3210-cafe-5e0710000002->sda3"; filesystem = "vfat"; + properties: { + subtype = "initrd"; + }; }); } diff --git a/recipes-core/swupdate/files/swupdate.handler.efibootguard.ini b/recipes-core/swupdate/files/swupdate.handler.efibootguard.ini new file mode 100644 index 0000000..3aee76c --- /dev/null +++ b/recipes-core/swupdate/files/swupdate.handler.efibootguard.ini @@ -0,0 +1,26 @@ +[image] +chainhandler=raw + +[image.selector] +method=cmdline_rr +key=root + +[image.bootenv] +kernelparams=root=PARTUUID=${rrtarget} ${cmdline_root} + +[kernel] +chainhandler=rawfile + +[kernel.selector] +method=cmdline_rrmap +key=root + +[kernel.bootenv] +kernelfile=C:BOOT${rrindex}:vmlinuz + +[initrd] +chainhandler=rawfile + +[initrd.selector] +method=cmdline_rrmap +key=root diff --git a/recipes-core/swupdate/swupdate.bb b/recipes-core/swupdate/swupdate.bb index 526c72f..c03c70b 100644 --- a/recipes-core/swupdate/swupdate.bb +++ b/recipes-core/swupdate/swupdate.bb @@ -29,6 +29,7 @@ DEBIAN_DEPENDS = "${shlibs:Depends}, ${misc:Depends}" inherit dpkg inherit swupdate-config +SRC_URI += "file://swupdate.handler.${BOOTLOADER}.ini" KFEATURES += "luahandler" S = "${WORKDIR}/git" @@ -46,5 +47,11 @@ do_prepare_build() { echo "configs/${DEFCONFIG}" >> ${S}/.gitignore fi # luahandler - install -m 0644 ${WORKDIR}/${SWUPDATE_LUASCRIPT} ${S} + if [ -e ${WORKDIR}/${SWUPDATE_LUASCRIPT} ]; then + install -m 0644 ${WORKDIR}/${SWUPDATE_LUASCRIPT} ${S}/swupdate_handlers.lua + fi + if [ -e "${WORKDIR}/swupdate.handler.${BOOTLOADER}.ini" ]; then + install -m 0644 ${WORKDIR}/swupdate.handler.${BOOTLOADER}.ini ${S}/swupdate.handler.ini + echo "swupdate.handler.ini etc/" >> ${S}/debian/swupdate.install + fi } -- 2.20.1