From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Fri, 23 Jun 2023 14:48:10 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qCgCx-000aQG-EU for lore@lore.pengutronix.de; Fri, 23 Jun 2023 14:48:10 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1qCgCt-0006Tc-Hd; Fri, 23 Jun 2023 14:48:07 +0200 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qCgCm-0006I9-9i; Fri, 23 Jun 2023 14:48:00 +0200 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1qCgCl-009VUl-Iw; Fri, 23 Jun 2023 14:47:59 +0200 Received: from rhi by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1qCgCj-009fBL-6I; Fri, 23 Jun 2023 14:47:57 +0200 From: Roland Hieber To: distrokit@pengutronix.de Date: Fri, 23 Jun 2023 14:47:41 +0200 Message-Id: <20230623124755.2292833-1-rhi@pengutronix.de> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Subject: [DistroKit] [PATCH 00/14] v7a: add redundant update support via RAUC X-BeenThere: distrokit@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: DistroKit Mailinglist List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Roland Hieber Sender: "DistroKit" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: distrokit-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false With this patch series, the first v7a platforms (beaglebone black, riotboard, rpi3, qemu-vexpress) gain support for redundant boot on two root partitions which can be updated with RAUC. Changelog: PATCH v3 -> v4: * rebase to current next branch * new ptxdist version, so host-ptx-code-signing-dev now pulls in host-python3-* dependencies via host-extract-cert and host-meson * move platforms/image-rauc.in to platforms/image-rauc.deps.in because we only want to add dependencies, not overwrite the whole file PATCH v2 -> v3: https://lore.distrokit.org/distrokit/20230427100134.2934937-1-rhi@pengutronix.de * Ahmad notified me off-line that beaglebone and riotboard were using the "circular" backend, but since state lives on the eMMC, the "direct" backend is better suited. PATCH v1 -> v2: https://lore.distrokit.org/distrokit/20230426201414.2044409-1-rhi@pengutronix.de * rebase to current master (PTXdist 2023.04.0) * new patch: "platforms: revert to default systemd loglevel" * new patch: "ptxconfig: enable more tools for debugging" (which also enables curl, which was previously in the patch enabling RAUC) * make use of barebox's CONFIG_EXTERNAL_DTS_FRAGMENTS to include a DTS fragment for the state variables and the board-specific backends instead of patching them into the barebox device trees (feedback by Ahmad Fatoum) * udev: use tr instead of xargs/printf in of_base_compatible (feedback by Michael Olbrich) * udev: add a fallback /dev/disk/by-usage/data symlink for boards not targeted by this series * udev: add missing 'GOTO="rauc_partitions_end"' at the end of each block so that the symlink settings are not overwritten by the following blocks * udev: fix partition mapping for RIoTBoard; for some reason the SD card is now /dev/mmcblk2 instead of /dev/mmcblk0 * kernel: * enable network block device support (BLK_DEV_NBD), needed for RAUC HTTPS streaming * enable SQUASHFS_FILE_DIRECT and SQUASHFS_DECOMP_MULTI for better performance (feedback by Jan Lübbe) * enable SQUASHFS_LZ4, SQUASHFS_XZ and SQUASHFS_ZSTD which makes it easy to change the bundle compression later. Currently, genimage generates zlib-compressed bundles. (feedback by Jan Lübbe) * rauc: only allow installing verity bundles (feedback by Jan Lübbe) * new patch: "image-rauc: fork config from PTXdist 2023.04.0" * new patch: "image-rauc: use ext4 rootfs instead of tar.gz" (I discussed with Enrico and Jan offline whether it is useful to have this change in upstream PTXdist, but the RAUC image config will be rather specific to the BSP anyway, and will be forked to the BSP by most users.) * new patch: "v7a: run: start with barebox by default" The datapartition clean-up didn't make it yet in this series. RAUC works without it, and I'll send a separate series once I've figured it out. Also I disregarded Marco's comment about moving the projectroot stuff to config/platform-v7a/, since it's not really v7a-specific and can be re-used on other platforms too when those want to gain RAUC support. PATCH v1: https://lore.distrokit.org/distrokit/20230212221449.1644628-1-rhi@pengutronix.de Roland Hieber (14): platforms: revert to default systemd loglevel ptxconfig: enable more tools for debugging rauc-udev: add a compatibility layer for mapping partitions v7a: barebox: include generic bootstate node in device tree v7a: add RAUC support for qemu-vexpress v7a: add RAUC support for beaglebone black v7a: add RAUC support for rpi3 v7a: add RAUC support for riotboard v7a: kernel: enable features necessary for RAUC rauc: add initial support v7a: enable RAUC bundle creation image-rauc: fork config from PTXdist 2023.04.0 image-rauc: use ext4 rootfs instead of tar.gz v7a: run: start with barebox by default config/images/rauc.config | 22 +++ configs/platform-mips/platformconfig | 27 +++- configs/platform-mips/run | 2 +- configs/platform-mipsel/platformconfig | 27 +++- configs/platform-rpi1/platformconfig | 25 ++- .../barebox-am335x-defaultenv/init/bootsource | 4 +- .../barebox-am335x-defaultenv/nv/boot.default | 1 + .../nv/bootchooser.state_prefix | 1 + .../nv/bootchooser.system0.boot | 1 + .../nv/bootchooser.system1.boot | 1 + .../nv/bootchooser.targets | 1 + .../nv/linux.bootargs.loglevel | 2 +- configs/platform-v7a/barebox-am335x.config | 5 +- .../platform-v7a/barebox-am335x.config.diff | 4 +- configs/platform-v7a/barebox-at91.config | 2 +- configs/platform-v7a/barebox-at91.config.diff | 2 +- .../barebox-mx6-defaultenv/init/bootsource | 6 +- .../barebox-mx6-defaultenv/nv/boot.default | 1 + .../nv/bootchooser.state_prefix | 1 + .../nv/bootchooser.system0.boot | 1 + .../nv/bootchooser.system1.boot | 1 + .../nv/bootchooser.targets | 1 + .../nv/linux.bootargs.loglevel | 2 +- configs/platform-v7a/barebox-mx6.config | 5 +- configs/platform-v7a/barebox-mx6.config.diff | 4 +- .../barebox-rpi2-defaultenv/init/bootsource | 5 +- .../barebox-rpi2-defaultenv/nv/boot.default | 1 + .../nv/bootchooser.state_prefix | 1 + .../nv/bootchooser.system0.boot | 1 + .../nv/bootchooser.system1.boot | 1 + .../nv/bootchooser.targets | 1 + .../nv/linux.bootargs.loglevel | 2 +- configs/platform-v7a/barebox-rpi2.config | 5 +- configs/platform-v7a/barebox-rpi2.config.diff | 4 +- .../nv/linux.bootargs.loglevel | 2 +- configs/platform-v7a/barebox-stm32mp.config | 2 +- .../platform-v7a/barebox-stm32mp.config.diff | 2 +- .../init/bootsource | 2 +- .../nv/boot.default | 1 + .../nv/bootchooser.state_prefix | 1 + .../nv/bootchooser.system0.boot | 1 + .../nv/bootchooser.system1.boot | 1 + .../nv/bootchooser.targets | 1 + .../nv/linux.bootargs.loglevel | 2 +- configs/platform-v7a/barebox-vexpress.config | 5 +- .../platform-v7a/barebox-vexpress.config.diff | 4 +- configs/platform-v7a/barebox.config | 2 +- .../config/images/beaglebone.config | 4 + .../config/images/riotboard.config | 6 + .../platform-v7a/config/images/rpi2.config | 5 + .../config/images/vexpress.config | 7 +- configs/platform-v7a/dts/bootstate.dtsi | 153 ++++++++++++++++++ configs/platform-v7a/kernelconfig | 70 +++++++- configs/platform-v7a/platformconfig | 37 ++++- configs/platform-v7a/run | 4 +- configs/platform-v7a/run-nfs | 2 +- .../nv/linux.bootargs.loglevel | 2 +- configs/platform-v7a_noneon/platformconfig | 27 +++- configs/platform-v7a_noneon/run | 2 +- configs/platform-v7a_noneon/run-nfs | 2 +- .../nv/linux.bootargs.loglevel | 2 +- .../nv/linux.bootargs.loglevel | 2 +- configs/platform-v8a/platformconfig | 26 ++- configs/platform-x86_64/platformconfig | 27 +++- configs/platform-x86_64/run | 2 +- configs/ptxconfig | 131 ++++++++++++--- platforms/image-rauc.deps.in | 6 + projectroot/etc/rauc/system.conf | 17 ++ .../lib/systemd/system/rauc-mark-good.service | 14 ++ projectroot/usr/lib/udev/of_base_compatible | 4 + .../lib/udev/rules.d/90-rauc-partitions.rules | 42 +++++ rules/rauc-udev.in | 10 ++ rules/rauc-udev.make | 37 +++++ 73 files changed, 763 insertions(+), 74 deletions(-) create mode 100644 config/images/rauc.config create mode 100644 configs/platform-v7a/barebox-am335x-defaultenv/nv/boot.default create mode 100644 configs/platform-v7a/barebox-am335x-defaultenv/nv/bootchooser.state_prefix create mode 100644 configs/platform-v7a/barebox-am335x-defaultenv/nv/bootchooser.system0.boot create mode 100644 configs/platform-v7a/barebox-am335x-defaultenv/nv/bootchooser.system1.boot create mode 100644 configs/platform-v7a/barebox-am335x-defaultenv/nv/bootchooser.targets create mode 100644 configs/platform-v7a/barebox-mx6-defaultenv/nv/boot.default create mode 100644 configs/platform-v7a/barebox-mx6-defaultenv/nv/bootchooser.state_prefix create mode 100644 configs/platform-v7a/barebox-mx6-defaultenv/nv/bootchooser.system0.boot create mode 100644 configs/platform-v7a/barebox-mx6-defaultenv/nv/bootchooser.system1.boot create mode 100644 configs/platform-v7a/barebox-mx6-defaultenv/nv/bootchooser.targets create mode 100644 configs/platform-v7a/barebox-rpi2-defaultenv/nv/boot.default create mode 100644 configs/platform-v7a/barebox-rpi2-defaultenv/nv/bootchooser.state_prefix create mode 100644 configs/platform-v7a/barebox-rpi2-defaultenv/nv/bootchooser.system0.boot create mode 100644 configs/platform-v7a/barebox-rpi2-defaultenv/nv/bootchooser.system1.boot create mode 100644 configs/platform-v7a/barebox-rpi2-defaultenv/nv/bootchooser.targets create mode 100644 configs/platform-v7a/barebox-vexpress-defaultenv/nv/boot.default create mode 100644 configs/platform-v7a/barebox-vexpress-defaultenv/nv/bootchooser.state_prefix create mode 100644 configs/platform-v7a/barebox-vexpress-defaultenv/nv/bootchooser.system0.boot create mode 100644 configs/platform-v7a/barebox-vexpress-defaultenv/nv/bootchooser.system1.boot create mode 100644 configs/platform-v7a/barebox-vexpress-defaultenv/nv/bootchooser.targets create mode 100644 configs/platform-v7a/dts/bootstate.dtsi create mode 100644 platforms/image-rauc.deps.in create mode 100644 projectroot/etc/rauc/system.conf create mode 100644 projectroot/usr/lib/systemd/system/rauc-mark-good.service create mode 100755 projectroot/usr/lib/udev/of_base_compatible create mode 100644 projectroot/usr/lib/udev/rules.d/90-rauc-partitions.rules create mode 100644 rules/rauc-udev.in create mode 100644 rules/rauc-udev.make -- 2.39.2