summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbaruch@tkos.co.il <baruch@tkos.co.il>2024-02-12 20:30:06 +0200
committerSteve Sakoman <steve@sakoman.com>2024-11-02 06:32:36 -0700
commitd92e3d8193e60c3bb11b4272f2d3def97d4a83a4 (patch)
tree5c65f23c7038c6a7b94a2ebed07779cdf8199271
parentd3e106ba1e015d7ffba65fd87e4cbcd55e31767b (diff)
downloadpoky-d92e3d8193e60c3bb11b4272f2d3def97d4a83a4.tar.gz
overlayfs-etc: add option to skip creation of mount dirs
The 'preinit' script can't create mount directories when rootfs is read-only. Add an option to skip this step. The user must make sure that all required directories are already in the rootfs directory layout. Cc: Vyacheslav Yurkov <uvv.mail@gmail.com> (From OE-Core rev: 302dd4a63f97e23631a62a0b902cc253f6843ab0) Signed-off-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 3d433d8559467d255bd19af2d0999c65ea24a48d) Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--meta/classes/overlayfs-etc.bbclass5
-rw-r--r--meta/files/overlayfs-etc-preinit.sh.in16
2 files changed, 13 insertions, 8 deletions
diff --git a/meta/classes/overlayfs-etc.bbclass b/meta/classes/overlayfs-etc.bbclass
index 40116e4c6e..7096aae1a8 100644
--- a/meta/classes/overlayfs-etc.bbclass
+++ b/meta/classes/overlayfs-etc.bbclass
@@ -35,6 +35,7 @@ OVERLAYFS_ETC_USE_ORIG_INIT_NAME ??= "1"
35OVERLAYFS_ETC_MOUNT_OPTIONS ??= "defaults" 35OVERLAYFS_ETC_MOUNT_OPTIONS ??= "defaults"
36OVERLAYFS_ETC_INIT_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-etc-preinit.sh.in" 36OVERLAYFS_ETC_INIT_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-etc-preinit.sh.in"
37OVERLAYFS_ETC_EXPOSE_LOWER ??= "0" 37OVERLAYFS_ETC_EXPOSE_LOWER ??= "0"
38OVERLAYFS_ETC_CREATE_MOUNT_DIRS ??= "1"
38 39
39python create_overlayfs_etc_preinit() { 40python create_overlayfs_etc_preinit() {
40 overlayEtcMountPoint = d.getVar("OVERLAYFS_ETC_MOUNT_POINT") 41 overlayEtcMountPoint = d.getVar("OVERLAYFS_ETC_MOUNT_POINT")
@@ -56,6 +57,7 @@ python create_overlayfs_etc_preinit() {
56 initBaseName = oe.path.join(d.getVar("base_sbindir"), "init") 57 initBaseName = oe.path.join(d.getVar("base_sbindir"), "init")
57 origInitNameSuffix = ".orig" 58 origInitNameSuffix = ".orig"
58 exposeLower = oe.types.boolean(d.getVar('OVERLAYFS_ETC_EXPOSE_LOWER')) 59 exposeLower = oe.types.boolean(d.getVar('OVERLAYFS_ETC_EXPOSE_LOWER'))
60 createMoundDirs = oe.types.boolean(d.getVar('OVERLAYFS_ETC_CREATE_MOUNT_DIRS'))
59 61
60 args = { 62 args = {
61 'OVERLAYFS_ETC_MOUNT_POINT': overlayEtcMountPoint, 63 'OVERLAYFS_ETC_MOUNT_POINT': overlayEtcMountPoint,
@@ -63,7 +65,8 @@ python create_overlayfs_etc_preinit() {
63 'OVERLAYFS_ETC_FSTYPE': overlayEtcFsType, 65 'OVERLAYFS_ETC_FSTYPE': overlayEtcFsType,
64 'OVERLAYFS_ETC_DEVICE': overlayEtcDevice, 66 'OVERLAYFS_ETC_DEVICE': overlayEtcDevice,
65 'SBIN_INIT_NAME': initBaseName + origInitNameSuffix if useOrigInit else initBaseName, 67 'SBIN_INIT_NAME': initBaseName + origInitNameSuffix if useOrigInit else initBaseName,
66 'OVERLAYFS_ETC_EXPOSE_LOWER': "true" if exposeLower else "false" 68 'OVERLAYFS_ETC_EXPOSE_LOWER': "true" if exposeLower else "false",
69 'CREATE_MOUNT_DIRS': "true" if createMoundDirs else "false"
67 } 70 }
68 71
69 if useOrigInit: 72 if useOrigInit:
diff --git a/meta/files/overlayfs-etc-preinit.sh.in b/meta/files/overlayfs-etc-preinit.sh.in
index 8db076f4ba..b05e3957a3 100644
--- a/meta/files/overlayfs-etc-preinit.sh.in
+++ b/meta/files/overlayfs-etc-preinit.sh.in
@@ -3,12 +3,15 @@
3echo "PREINIT: Start" 3echo "PREINIT: Start"
4 4
5PATH=/sbin:/bin:/usr/sbin:/usr/bin 5PATH=/sbin:/bin:/usr/sbin:/usr/bin
6mount -o remount,rw / 6if {CREATE_MOUNT_DIRS}; then
7 7 mount -o remount,rw /
8mkdir -p /proc 8
9mkdir -p /sys 9 mkdir -p /proc
10mkdir -p /run 10 mkdir -p /sys
11mkdir -p /var/run 11 mkdir -p /run
12 mkdir -p /var/run
13 mkdir -p {OVERLAYFS_ETC_MOUNT_POINT}
14fi
12 15
13mount -t proc proc /proc 16mount -t proc proc /proc
14mount -t sysfs sysfs /sys 17mount -t sysfs sysfs /sys
@@ -20,7 +23,6 @@ UPPER_DIR=$BASE_OVERLAY_ETC_DIR/upper
20WORK_DIR=$BASE_OVERLAY_ETC_DIR/work 23WORK_DIR=$BASE_OVERLAY_ETC_DIR/work
21LOWER_DIR=$BASE_OVERLAY_ETC_DIR/lower 24LOWER_DIR=$BASE_OVERLAY_ETC_DIR/lower
22 25
23mkdir -p {OVERLAYFS_ETC_MOUNT_POINT}
24if mount -n -t {OVERLAYFS_ETC_FSTYPE} \ 26if mount -n -t {OVERLAYFS_ETC_FSTYPE} \
25 -o {OVERLAYFS_ETC_MOUNT_OPTIONS} \ 27 -o {OVERLAYFS_ETC_MOUNT_OPTIONS} \
26 {OVERLAYFS_ETC_DEVICE} {OVERLAYFS_ETC_MOUNT_POINT} 28 {OVERLAYFS_ETC_DEVICE} {OVERLAYFS_ETC_MOUNT_POINT}