Message ID | 20210430133351.26394-1-Quirin.Gylstorff@siemens.com (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | [isar-cip-core,RFC] Add option to use swupdate-handler-roundrobin | expand |
On 30.04.21 15:33, Q. Gylstorff wrote: > From: Quirin Gylstorff <quirin.gylstorff@siemens.com> > > 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. ...but the in-tree handler does. How much effort is needed to port that feature into the new handler? Jan > > [1]:https://gitlab.com/cip-playground/swupdate-handler-roundrobin/ > > Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com> > --- > 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 > } >
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 }