diff mbox series

[RFC,isar-cip-core,4/4] Move content of home to IMMUTABLE_DATA_DIR

Message ID 20250211085125.22154-5-Quirin.Gylstorff@siemens.com (mailing list archive)
State New
Headers show
Series Make /home partition optional | expand

Commit Message

Quirin Gylstorff Feb. 11, 2025, 8:49 a.m. UTC
From: Quirin Gylstorff <quirin.gylstorff@siemens.com>

This reduces the amount of necessary partitions. It also
allows to use a A/B-update scheme for the var partition.

This fixes issue #123.

https://gitlab.com/cip-project/cip-core/isar-cip-core/-/issues/123
Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com>
---
 classes/read-only-rootfs.bbclass | 11 +++++++++++
 kas/opt/home-to-var.yml          | 21 +++++++++++++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 kas/opt/home-to-var.yml

Comments

Jan Kiszka Feb. 11, 2025, 1:09 p.m. UTC | #1
On 11.02.25 09:49, Quirin Gylstorff wrote:
> From: Quirin Gylstorff <quirin.gylstorff@siemens.com>
> 
> This reduces the amount of necessary partitions. It also
> allows to use a A/B-update scheme for the var partition.
> 
> This fixes issue #123.
> 
> https://gitlab.com/cip-project/cip-core/isar-cip-core/-/issues/123
> Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com>
> ---
>  classes/read-only-rootfs.bbclass | 11 +++++++++++
>  kas/opt/home-to-var.yml          | 21 +++++++++++++++++++++
>  2 files changed, 32 insertions(+)
>  create mode 100644 kas/opt/home-to-var.yml
> 
> diff --git a/classes/read-only-rootfs.bbclass b/classes/read-only-rootfs.bbclass
> index 99a2909..c809187 100644
> --- a/classes/read-only-rootfs.bbclass
> +++ b/classes/read-only-rootfs.bbclass
> @@ -17,6 +17,10 @@ do_image_wic[depends] += "${INITRAMFS_RECIPE}:do_build"
>  IMAGE_INSTALL += "home-fs"
>  HOME_PARTITION_CMD = "part /home --source rootfs --change-directory=home --fstype=ext4 --label home --align 1024  --size 1G --fsuuid 1f55d66a-40d8-11ee-be56-0242ac120002"
>  
> +HOME_PARTITION_CMD:home-to-var = ""
> +IMAGE_INSTALL:remove:home-to-var = " home-fs"
> +IMAGE_INSTALL:append:home-to-var = " move-homedir-var"
> +
>  IMAGE_INSTALL:append:buster   = " tmp-fs"
>  IMAGE_INSTALL:append:bullseye = " tmp-fs"
>  IMAGE_INSTALL:append:bookworm = " tmp-fs"
> @@ -37,6 +41,13 @@ copy_dpkg_state() {
>      sudo cp -a ${ROOTFSDIR}/var/lib/dpkg "$IMMUTABLE_VAR_LIB/"
>  }
>  
> +ROOTFS_POSTPROCESS_COMMAND:append:home-to-var =" copy_home_to_immutable_data"
> +copy_home_to_immutable_data() {
> +    IMMUTABLE_HOME_DIR="${ROOTFSDIR}/${IMMUTABLE_DATA_DIR}/"
> +    sudo mkdir -p "$IMMUTABLE_HOME_DIR"
> +    sudo cp -a ${ROOTFSDIR}/var/home "$IMMUTABLE_HOME_DIR/"
> +}
> +
>  RO_ROOTFS_EXCLUDE_DIRS ??= ""
>  EROFS_EXCLUDE_DIRS = "${RO_ROOTFS_EXCLUDE_DIRS}"
>  SQUASHFS_EXCLUDE_DIRS = "${RO_ROOTFS_EXCLUDE_DIRS}"
> diff --git a/kas/opt/home-to-var.yml b/kas/opt/home-to-var.yml
> new file mode 100644
> index 0000000..c40b4cd
> --- /dev/null
> +++ b/kas/opt/home-to-var.yml
> @@ -0,0 +1,21 @@
> +#
> +# CIP Core, generic profile
> +#
> +# Copyright (c) Siemens AG, 2025
> +#
> +# Authors:
> +#  Quirin Gylstorff <quirin.gylstorff@siemens.com>
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +# This kas file adds swupdate and generates a ${IMAGE_NAME}.swu
> +# from the first wic partition
> +
> +header:
> +  version: 14
> +
> +local_conf_header:
> +  move-home-to-var: |
> +    OVERRIDES .= ":home-to-var"
> +  remove-home-from-crypt: |
> +    CRYPT_PARTITIONS:remove:home-to-var = "home:/home:reencrypt"

Once all the details are sorted out, I rather think we want to make this
pattern opt-out, at least when building new images with isar-cip-core.
Existing users should be able to keep the previous variant, but new ones
should get it automatically. That would also avoid having to provide a
kconfig menu entry (which you forgot).

Jan
diff mbox series

Patch

diff --git a/classes/read-only-rootfs.bbclass b/classes/read-only-rootfs.bbclass
index 99a2909..c809187 100644
--- a/classes/read-only-rootfs.bbclass
+++ b/classes/read-only-rootfs.bbclass
@@ -17,6 +17,10 @@  do_image_wic[depends] += "${INITRAMFS_RECIPE}:do_build"
 IMAGE_INSTALL += "home-fs"
 HOME_PARTITION_CMD = "part /home --source rootfs --change-directory=home --fstype=ext4 --label home --align 1024  --size 1G --fsuuid 1f55d66a-40d8-11ee-be56-0242ac120002"
 
+HOME_PARTITION_CMD:home-to-var = ""
+IMAGE_INSTALL:remove:home-to-var = " home-fs"
+IMAGE_INSTALL:append:home-to-var = " move-homedir-var"
+
 IMAGE_INSTALL:append:buster   = " tmp-fs"
 IMAGE_INSTALL:append:bullseye = " tmp-fs"
 IMAGE_INSTALL:append:bookworm = " tmp-fs"
@@ -37,6 +41,13 @@  copy_dpkg_state() {
     sudo cp -a ${ROOTFSDIR}/var/lib/dpkg "$IMMUTABLE_VAR_LIB/"
 }
 
+ROOTFS_POSTPROCESS_COMMAND:append:home-to-var =" copy_home_to_immutable_data"
+copy_home_to_immutable_data() {
+    IMMUTABLE_HOME_DIR="${ROOTFSDIR}/${IMMUTABLE_DATA_DIR}/"
+    sudo mkdir -p "$IMMUTABLE_HOME_DIR"
+    sudo cp -a ${ROOTFSDIR}/var/home "$IMMUTABLE_HOME_DIR/"
+}
+
 RO_ROOTFS_EXCLUDE_DIRS ??= ""
 EROFS_EXCLUDE_DIRS = "${RO_ROOTFS_EXCLUDE_DIRS}"
 SQUASHFS_EXCLUDE_DIRS = "${RO_ROOTFS_EXCLUDE_DIRS}"
diff --git a/kas/opt/home-to-var.yml b/kas/opt/home-to-var.yml
new file mode 100644
index 0000000..c40b4cd
--- /dev/null
+++ b/kas/opt/home-to-var.yml
@@ -0,0 +1,21 @@ 
+#
+# CIP Core, generic profile
+#
+# Copyright (c) Siemens AG, 2025
+#
+# Authors:
+#  Quirin Gylstorff <quirin.gylstorff@siemens.com>
+#
+# SPDX-License-Identifier: MIT
+#
+# This kas file adds swupdate and generates a ${IMAGE_NAME}.swu
+# from the first wic partition
+
+header:
+  version: 14
+
+local_conf_header:
+  move-home-to-var: |
+    OVERRIDES .= ":home-to-var"
+  remove-home-from-crypt: |
+    CRYPT_PARTITIONS:remove:home-to-var = "home:/home:reencrypt"