]> code.ossystems Code Review - openembedded-core.git/commitdiff
initscripts: add read-only-rootfs-hook.sh script
authorChen Qi <Qi.Chen@windriver.com>
Tue, 29 Jan 2013 04:24:43 +0000 (12:24 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 6 Feb 2013 09:35:05 +0000 (09:35 +0000)
Add read-only-rootfs-hook.sh script to support a read-only rootfs.
This script makes a union mount of /var/lib and /var/volatile/lib,
making /var/lib directory writable.

[YOCTO #3406]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh [new file with mode: 0644]
meta/recipes-core/initscripts/initscripts_1.0.bb

diff --git a/meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh b/meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh
new file mode 100644 (file)
index 0000000..3a295ee
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+. /etc/default/rcS
+
+[ "$ROOTFS_READ_ONLY" = "no" ] && exit 0
+
+# Make sure unionfs is in /proc/filesystems
+if ! grep -q unionfs /proc/filesystems; then
+    echo "ERROR: unionfs not supported by kernel!"
+    exit 1
+fi
+
+mkdir -p /var/volatile/lib
+mount -t unionfs -o dirs=/var/volatile/lib:/var/lib=ro none /var/lib
+
+if [ $? != 0 ]; then
+    echo "ERROR: Union mount failed!"
+    exit 1
+fi
index 69b9bfbe329a7a1534ade8c5fc23647a9c64fd5c..68f80346ef794d913d2e76a4d6255156a9bfab4e 100644 (file)
@@ -28,6 +28,7 @@ SRC_URI = "file://functions \
            file://sysfs.sh \
            file://device_table.txt \
            file://populate-volatile.sh \
+           file://read-only-rootfs-hook.sh \
            file://volatiles \
            file://save-rtc.sh \
            file://GPLv2.patch"
@@ -85,6 +86,7 @@ do_install () {
        install -m 0755    ${WORKDIR}/devpts            ${D}${sysconfdir}/default
        install -m 0755    ${WORKDIR}/sysfs.sh          ${D}${sysconfdir}/init.d
        install -m 0755    ${WORKDIR}/populate-volatile.sh ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/read-only-rootfs-hook.sh ${D}${sysconfdir}/init.d
        install -m 0755    ${WORKDIR}/save-rtc.sh       ${D}${sysconfdir}/init.d
        install -m 0644    ${WORKDIR}/volatiles         ${D}${sysconfdir}/default/volatiles/00_core
 
@@ -116,6 +118,7 @@ do_install () {
        update-rc.d -r ${D} bootmisc.sh start 55 S .
        update-rc.d -r ${D} sysfs.sh start 02 S .
        update-rc.d -r ${D} populate-volatile.sh start 37 S .
+       update-rc.d -r ${D} read-only-rootfs-hook.sh start 41 S .
        update-rc.d -r ${D} devpts.sh start 38 S .
        if [ "${TARGET_ARCH}" = "arm" ]; then
                update-rc.d -r ${D} alignment.sh start 06 S .