From: "Ng, Wei Tee" <wei.tee...@intel.com>

Integrate the featuers in init-live.sh into new scriptlet to handle
boot up live image process using framework method.

This commit include the changes for:
- Create a conditional loop for the bootparam_root variable. If it is
not set, then it will boot from ROOT_IMAGE. Else, it will boot normally
which is not from removable media.

- Gives a standard path to the original boot disk mount which can be
used to. While /media/sda is a good guess, it isn't always right, nor
is it a good assumption that only one boot disk is in the system.

- The current rootfs module has no support for rootfs images, currently
it only support for rootfs partitions for wic image. Therefore, there
is a need to assign the rootfs image for live image.

Signed-off-by: Ng, Wei Tee <wei.tee...@intel.com>
---
 .../initrdscripts/initramfs-framework/setup-live   | 67 ++++++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 
meta/recipes-core/initrdscripts/initramfs-framework/setup-live

diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/setup-live 
b/meta/recipes-core/initrdscripts/initramfs-framework/setup-live
new file mode 100644
index 0000000..16da34a
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/setup-live
@@ -0,0 +1,67 @@
+#/bin/sh
+# Copyright (C) 2011 O.S. Systems Software LTDA.
+# Licensed on MIT
+
+setup_enabled() {
+       return 0
+}
+
+setup_run() {
+ROOT_IMAGE="rootfs.img"
+ISOLINUX=""
+ROOT_DISK=""
+shelltimeout=30
+
+       if [ -z $bootparam_root ]; then
+               echo "Waiting for removable media..."
+               C=0
+               while true
+               do
+                 for i in `ls /run/media 2>/dev/null`; do
+                     if [ -f /run/media/$i/$ROOT_IMAGE ] ; then
+                               found="yes"
+                               ROOT_DISK="$i"
+                               break
+                         elif [ -f /run/media/$i/isolinux/$ROOT_IMAGE ]; then
+                               found="yes"
+                               ISOLINUX="isolinux"
+                               ROOT_DISK="$i"
+                               break
+                     fi
+                 done
+                 if [ "$found" = "yes" ]; then
+                     break;
+                 fi
+                 # don't wait for more than $shelltimeout seconds, if it's set
+                 if [ -n "$shelltimeout" ]; then
+                     echo -n " " $(( $shelltimeout - $C ))
+                     if [ $C -ge $shelltimeout ]; then
+                          echo "..."
+                          echo "Mounted filesystems"
+                          mount | grep media
+                          echo "Available block devices"
+                          cat /proc/partitions
+                          fatal "Cannot find $ROOT_IMAGE file in /run/media/* 
, dropping to a shell "
+                     fi
+                     C=$(( C + 1 ))
+                 fi
+                 sleep 1
+               done
+
+               # The existing rootfs module has no support for rootfs images. 
Assign the rootfs image.
+               bootparam_root="/run/media/$ROOT_DISK/$ISOLINUX/$ROOT_IMAGE"
+       else
+               break
+       fi
+
+       if [ "$bootparam_LABEL" != "boot" -a -f /init.d/$bootparam_LABEL.sh ] ; 
then
+               if [ -f /run/media/$i/$ISOLINUX/$ROOT_IMAGE ] ; then
+                   ./init.d/$bootparam_LABEL.sh $i/$ISOLINUX $ROOT_IMAGE 
$video_mode $vga_mode $console_params
+               else
+                   fatal "Could not find $bootparam_LABEL script"
+               fi
+
+               # If we're getting here, we failed...
+               fatal "Target $bootparam_LABEL failed"
+       fi
+}
-- 
2.7.4

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to