All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] files: rootfs-postcommands: move helper commands to script
@ 2022-06-01 19:30 Vyacheslav Yurkov
  2022-06-01 19:30 ` [PATCH 2/2] files: respect overlayfs owner from lower layer Vyacheslav Yurkov
  0 siblings, 1 reply; 2+ messages in thread
From: Vyacheslav Yurkov @ 2022-06-01 19:30 UTC (permalink / raw)
  To: openembedded-core; +Cc: Vyacheslav Yurkov

From: Vyacheslav Yurkov <v.yurkov@precitec.de>

OverlayFS systemd helper unit might require more pre-processing
commands. It gets more complicated to embed them in a unit file, because
systemd shell subset is limited and might require additional escaping.
Move the command to a separate script, thus simplifying systemd unit.

Signed-off-by: Vyacheslav Yurkov <v.yurkov@precitec.de>
---
 meta/classes/rootfs-postcommands.bbclass    | 13 ++++++++++++-
 meta/files/overlayfs-create-dirs.service.in |  3 +--
 meta/files/overlayfs-create-dirs.sh         |  8 ++++++++
 3 files changed, 21 insertions(+), 3 deletions(-)
 create mode 100644 meta/files/overlayfs-create-dirs.sh

diff --git a/meta/classes/rootfs-postcommands.bbclass b/meta/classes/rootfs-postcommands.bbclass
index d302c23cf4..3f9fdb602d 100644
--- a/meta/classes/rootfs-postcommands.bbclass
+++ b/meta/classes/rootfs-postcommands.bbclass
@@ -39,7 +39,7 @@ ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "systemd"
 
 ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
 
-ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "overlayfs", "overlayfs_qa_check;", "", d)}'
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "overlayfs", "overlayfs_qa_check; overlayfs_postprocess;", "", d)}'
 
 inherit image-artifact-names
 
@@ -422,3 +422,14 @@ python overlayfs_qa_check() {
     if not allUnitExist:
         bb.fatal('Not all mount paths and units are installed in the image')
 }
+
+python overlayfs_postprocess() {
+    import shutil
+
+    # install helper script
+    helperScriptName = "overlayfs-create-dirs.sh"
+    helperScriptSource = oe.path.join(d.getVar("COREBASE"), "meta/files", helperScriptName)
+    helperScriptDest = oe.path.join(d.getVar("IMAGE_ROOTFS"), "/usr/sbin/", helperScriptName)
+    shutil.copyfile(helperScriptSource, helperScriptDest)
+    os.chmod(helperScriptDest, 0o755)
+}
diff --git a/meta/files/overlayfs-create-dirs.service.in b/meta/files/overlayfs-create-dirs.service.in
index 61b2b9321b..c949a6dc73 100644
--- a/meta/files/overlayfs-create-dirs.service.in
+++ b/meta/files/overlayfs-create-dirs.service.in
@@ -6,8 +6,7 @@ DefaultDependencies=no
 
 [Service]
 Type=oneshot
-ExecStart=mkdir -p {DATA_MOUNT_POINT}/upper{LOWERDIR}
-ExecStart=mkdir -p {DATA_MOUNT_POINT}/workdir{LOWERDIR}
+ExecStart=/usr/sbin/overlayfs-create-dirs.sh {LOWERDIR} {DATA_MOUNT_POINT}
 RemainAfterExit=true
 StandardOutput=journal
 
diff --git a/meta/files/overlayfs-create-dirs.sh b/meta/files/overlayfs-create-dirs.sh
new file mode 100644
index 0000000000..06c7587a6b
--- /dev/null
+++ b/meta/files/overlayfs-create-dirs.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# This script is intended to be used sorely by overlayfs-create-dirs.service
+# Usage: overlayfs-create-dirs.sh <LOWERDIR> <DATA_MOUNT_POINT>
+
+lowerdir=$1
+datamountpoint=$2
+mkdir -p ${datamountpoint}/upper${lowerdir}
+mkdir -p ${datamountpoint}/workdir${lowerdir}
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH 2/2] files: respect overlayfs owner from lower layer
  2022-06-01 19:30 [PATCH 1/2] files: rootfs-postcommands: move helper commands to script Vyacheslav Yurkov
@ 2022-06-01 19:30 ` Vyacheslav Yurkov
  0 siblings, 0 replies; 2+ messages in thread
From: Vyacheslav Yurkov @ 2022-06-01 19:30 UTC (permalink / raw)
  To: openembedded-core; +Cc: Vyacheslav Yurkov

From: Vyacheslav Yurkov <v.yurkov@precitec.de>

Permission model of overlayfs uses permissions/ownership from the upper
layer after mounting. Fix up UID/GID of the upper layer, when lower
layer already uses something custom.

Signed-off-by: Vyacheslav Yurkov <v.yurkov@precitec.de>
---
 meta/files/overlayfs-create-dirs.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/meta/files/overlayfs-create-dirs.sh b/meta/files/overlayfs-create-dirs.sh
index 06c7587a6b..9954c34352 100644
--- a/meta/files/overlayfs-create-dirs.sh
+++ b/meta/files/overlayfs-create-dirs.sh
@@ -6,3 +6,6 @@ lowerdir=$1
 datamountpoint=$2
 mkdir -p ${datamountpoint}/upper${lowerdir}
 mkdir -p ${datamountpoint}/workdir${lowerdir}
+if [ -d "$lowerdir" ]; then
+    chown $(stat -c "%U:%G" ${lowerdir}) ${datamountpoint}/upper${lowerdir}
+fi
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-01 19:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-01 19:30 [PATCH 1/2] files: rootfs-postcommands: move helper commands to script Vyacheslav Yurkov
2022-06-01 19:30 ` [PATCH 2/2] files: respect overlayfs owner from lower layer Vyacheslav Yurkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.