public inbox for cip-dev@lists.cip-project.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: cip-dev@lists.cip-project.org
Cc: Christian Storm <christian.storm@siemens.com>,
	Quirin Gylstorff <quirin.gylstorff@siemens.com>,
	Felix Moessbauer <felix.moessbauer@siemens.com>
Subject: [isar-cip-core][RFC][PATCH 00/10] Provide A/B snapshot support for persistent /var
Date: Thu, 30 Jan 2025 10:39:07 +0100	[thread overview]
Message-ID: <cover.1738229957.git.jan.kiszka@siemens.com> (raw)

This is a first attempt to provide a pattern and reusable recipes for
saving and rolling back the persistent data during A/B updates. The
obvious approach is using a filesystem that supports snapshots and
linking those to the rootfs revision that is being booted. As first
implementation, we are using btrfs. While the current implementation is
built around btrfs, the concept should not. It may even work with
device mapper snapshots.

That said, the devil is always in the details. And even this "simple",
btrfs-only implementation took some rounds to find a logic that neither
piles up obsolete snapshots or deletes them prematurely. Still, careful
review is highly welcome, specifically of patch 3.

As we are currently having split /var and /home partitions, this does
not cover anything in home directories. However, this will automatically
change when [1] is addressed.

Jan

[1] https://gitlab.com/cip-project/cip-core/isar-cip-core/-/issues/123

Jan Kiszka (10):
  initramfs-crypt-hook: Add support for btrfs
  initramfs-crypt-hook: Bump revision
  initramfs: Add hook for managing /var in A/B fashion
  initramfs-overlay-hook: Optimize variable initialization
  initramfs-overlay-hook: Tune the parameter documentation
  initramfs-overlay-hook: Add awareness for abvar hook
  initramfs-overlay-hook: Bump revision
  swupdate: Make var filesystem type configurable for update images
  swupdate: Activate abvar initramfs hook when VAR_FS_TYPE is set to
    btrfs
  Enable A/B snapshot for /var on x86 and qemu-arm64

 classes/swupdate.bbclass                      |  1 +
 conf/machine/qemu-amd64.conf                  |  5 +-
 conf/machine/qemu-arm64.conf                  |  5 +-
 conf/machine/x86-uefi.conf                    |  5 +-
 kas/opt/ebg-swu.yml                           |  6 +-
 kas/opt/swupdate.yml                          |  1 +
 .../cip-core-initramfs/cip-core-initramfs.bb  |  3 +-
 .../files/local-bottom.tmpl                   | 86 +++++++++++++++++++
 .../initramfs-abvar-hook_0.1.bb               | 31 +++++++
 .../files/local-top-complete                  |  7 ++
 ...ook_0.5.bb => initramfs-crypt-hook_0.6.bb} |  6 ++
 .../files/local-bottom.tmpl                   | 10 ++-
 ...k_0.2.bb => initramfs-overlay-hook_0.3.bb} |  8 +-
 wic/bbb-efibootguard.wks.in                   |  2 +-
 wic/hihope-rzg2m-efibootguard.wks.in          |  2 +-
 wic/qemu-arm64-efibootguard-secureboot.wks.in |  2 +-
 wic/qemu-arm64-efibootguard.wks.in            |  2 +-
 wic/qemu-riscv64-efibootguard.wks.in          |  2 +-
 wic/x86-uefi-efibootguard-secureboot.wks.in   |  2 +-
 wic/x86-uefi-efibootguard.wks.in              |  2 +-
 20 files changed, 168 insertions(+), 20 deletions(-)
 create mode 100644 recipes-initramfs/initramfs-abvar-hook/files/local-bottom.tmpl
 create mode 100644 recipes-initramfs/initramfs-abvar-hook/initramfs-abvar-hook_0.1.bb
 rename recipes-initramfs/initramfs-crypt-hook/{initramfs-crypt-hook_0.5.bb => initramfs-crypt-hook_0.6.bb} (93%)
 rename recipes-initramfs/initramfs-overlay-hook/{initramfs-overlay-hook_0.2.bb => initramfs-overlay-hook_0.3.bb} (87%)

-- 
2.43.0



             reply	other threads:[~2025-01-30  9:39 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-30  9:39 Jan Kiszka [this message]
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 01/10] initramfs-crypt-hook: Add support for btrfs Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 02/10] initramfs-crypt-hook: Bump revision Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 03/10] initramfs: Add hook for managing /var in A/B fashion Jan Kiszka
2025-01-30 16:10   ` Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 04/10] initramfs-overlay-hook: Optimize variable initialization Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 05/10] initramfs-overlay-hook: Tune the parameter documentation Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 06/10] initramfs-overlay-hook: Add awareness for abvar hook Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 07/10] initramfs-overlay-hook: Bump revision Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 08/10] swupdate: Make var filesystem type configurable for update images Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 09/10] swupdate: Activate abvar initramfs hook when VAR_FS_TYPE is set to btrfs Jan Kiszka
2025-01-30  9:39 ` [isar-cip-core][RFC][PATCH 10/10] Enable A/B snapshot for /var on x86 and qemu-arm64 Jan Kiszka
2025-01-30 14:06   ` MOESSBAUER, Felix
2025-01-30 15:38     ` Jan Kiszka
2025-01-30 16:11 ` [isar-cip-core][RFC][PATCH 00/10] Provide A/B snapshot support for persistent /var Jan Kiszka
2025-02-03 17:17 ` Jan Kiszka
2025-02-03 17:29   ` Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1738229957.git.jan.kiszka@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=christian.storm@siemens.com \
    --cc=cip-dev@lists.cip-project.org \
    --cc=felix.moessbauer@siemens.com \
    --cc=quirin.gylstorff@siemens.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox