diff options
| author | baruch@tkos.co.il <baruch@tkos.co.il> | 2024-02-12 20:30:06 +0200 |
|---|---|---|
| committer | Steve Sakoman <steve@sakoman.com> | 2024-11-02 06:32:36 -0700 |
| commit | d92e3d8193e60c3bb11b4272f2d3def97d4a83a4 (patch) | |
| tree | 5c65f23c7038c6a7b94a2ebed07779cdf8199271 | |
| parent | d3e106ba1e015d7ffba65fd87e4cbcd55e31767b (diff) | |
| download | poky-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.bbclass | 5 | ||||
| -rw-r--r-- | meta/files/overlayfs-etc-preinit.sh.in | 16 |
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" | |||
| 35 | OVERLAYFS_ETC_MOUNT_OPTIONS ??= "defaults" | 35 | OVERLAYFS_ETC_MOUNT_OPTIONS ??= "defaults" |
| 36 | OVERLAYFS_ETC_INIT_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-etc-preinit.sh.in" | 36 | OVERLAYFS_ETC_INIT_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-etc-preinit.sh.in" |
| 37 | OVERLAYFS_ETC_EXPOSE_LOWER ??= "0" | 37 | OVERLAYFS_ETC_EXPOSE_LOWER ??= "0" |
| 38 | OVERLAYFS_ETC_CREATE_MOUNT_DIRS ??= "1" | ||
| 38 | 39 | ||
| 39 | python create_overlayfs_etc_preinit() { | 40 | python 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 @@ | |||
| 3 | echo "PREINIT: Start" | 3 | echo "PREINIT: Start" |
| 4 | 4 | ||
| 5 | PATH=/sbin:/bin:/usr/sbin:/usr/bin | 5 | PATH=/sbin:/bin:/usr/sbin:/usr/bin |
| 6 | mount -o remount,rw / | 6 | if {CREATE_MOUNT_DIRS}; then |
| 7 | 7 | mount -o remount,rw / | |
| 8 | mkdir -p /proc | 8 | |
| 9 | mkdir -p /sys | 9 | mkdir -p /proc |
| 10 | mkdir -p /run | 10 | mkdir -p /sys |
| 11 | mkdir -p /var/run | 11 | mkdir -p /run |
| 12 | mkdir -p /var/run | ||
| 13 | mkdir -p {OVERLAYFS_ETC_MOUNT_POINT} | ||
| 14 | fi | ||
| 12 | 15 | ||
| 13 | mount -t proc proc /proc | 16 | mount -t proc proc /proc |
| 14 | mount -t sysfs sysfs /sys | 17 | mount -t sysfs sysfs /sys |
| @@ -20,7 +23,6 @@ UPPER_DIR=$BASE_OVERLAY_ETC_DIR/upper | |||
| 20 | WORK_DIR=$BASE_OVERLAY_ETC_DIR/work | 23 | WORK_DIR=$BASE_OVERLAY_ETC_DIR/work |
| 21 | LOWER_DIR=$BASE_OVERLAY_ETC_DIR/lower | 24 | LOWER_DIR=$BASE_OVERLAY_ETC_DIR/lower |
| 22 | 25 | ||
| 23 | mkdir -p {OVERLAYFS_ETC_MOUNT_POINT} | ||
| 24 | if mount -n -t {OVERLAYFS_ETC_FSTYPE} \ | 26 | if 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} |
