[YOCTO #1487]

Use unionfs to mount rootfs and make root file system can be writen when using 
liveCD to boot up.
Set UNION_FS variable depending on kenrel config, so that it can work with 
kernel which doesn't
have unionfs feature.

Signed-off-by: Yang Shi <yang....@windriver.com>
---
 meta/recipes-core/initrdscripts/files/init-live.sh |   21 +++++++++++++++++--
 .../initrdscripts/initramfs-live-boot_1.0.bb       |    9 +++++++-
 2 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh 
b/meta/recipes-core/initrdscripts/files/init-live.sh
index eb5ab5b..abaf16c 100644
--- a/meta/recipes-core/initrdscripts/files/init-live.sh
+++ b/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -7,6 +7,7 @@ ROOT_IMAGE="rootfs.img"
 MOUNT="/bin/mount"
 UMOUNT="/bin/umount"
 ISOLINUX=""
+UNIONFS="no"
 
 early_setup() {
     mkdir /proc
@@ -89,10 +90,24 @@ case $label in
        mkdir $ROOT_MOUNT
        mknod /dev/loop0 b 7 0 2>/dev/null
 
-       if ! $MOUNT -o rw,loop,noatime,nodiratime 
/media/$i/$ISOLINUX/$ROOT_IMAGE $ROOT_MOUNT ; then
-           fatal "Couldnt mount rootfs image"
+       
+       if [ "$UNIONFS" = "yes" ]; then
+           mkdir /rootfs-tmp
+
+           if ! $MOUNT -o rw,loop,noatime,nodiratime 
/media/$i/$ISOLINUX/$ROOT_IMAGE /rootfs-tmp ; then
+               fatal "Couldnt mount rootfs image"
+           else
+               mkdir /cow
+               mount -t tmpfs -o rw,noatime,mode=755 tmpfs /cow
+               mount -t unionfs -o dirs=/cow:/rootfs-tmp=ro unionfs $ROOT_MOUNT
+               boot_live_root
+           fi
        else
-           boot_live_root
+           if ! $MOUNT -o rw,loop,noatime,nodiratime 
/media/$i/$ISOLINUX/$ROOT_IMAGE $ROOT_MOUNT ; then
+               fatal "Couldnt mount rootfs image"
+           else
+               boot_live_root
+           fi
        fi
        ;;
     install)
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb 
b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
index e85a0e1..f7f0c9d 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
@@ -2,10 +2,17 @@ DESCRIPTION = "A live image init script"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = 
"file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 RDEPENDS = "udev"
+DEPENDS = "virtual/kernel"
 SRC_URI = "file://init-live.sh"
 
-PR = "r7"
+PR = "r8"
 
+do_compile() {
+       if grep -q "CONFIG_UNION_FS=y" ${STAGING_KERNEL_DIR}/.config; then
+               sed -i 's/UNIONFS="no"/UNIONFS="yes"/g' ${WORKDIR}/init-live.sh
+       fi
+}
+ 
 do_install() {
         install -m 0755 ${WORKDIR}/init-live.sh ${D}/init
 }
-- 
1.7.5.4

_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to