[OE-core] [PATCH v3 1/2] initramfs-framework: setup-live: detect media and assign rootfs image

Otavio Salvador otavio.salvador at ossystems.com.br
Mon Jul 10 17:42:16 UTC 2017


On Thu, Jul 6, 2017 at 3:28 PM,  <wei.tee.ng at intel.com> wrote:
> From: "Ng, Wei Tee" <wei.tee.ng at intel.com>
>
> Integrate the featuers in init-live.sh into new scriptlet to handle

typo!

> 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.ng at 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

Wrong indent

> +       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

Wrong indent

> +                               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 "

IIRC fatal does not drop to a shell, it keeps a loop.

> +                     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 at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750



More information about the Openembedded-core mailing list