Re: [OE-core] [PATCH v6 1/1] initramfs-framework: module to support boot live image

2017-07-31 Thread Patrick Ohly
On Wed, 2017-07-12 at 12:29 -0700, wei.tee...@intel.com wrote:
> +SUMMARY_initramfs-module-setup-live = "initramfs support for setup
> live"
> +RDEPENDS_initramfs-module-setup-live = "${PN}-base udev-extraconf"
> +FILES_initramfs-module-setup-live = "/init.d/80-setup-live"

Same problem as with install-efi: this RDEPENDS in initramfs-framework
makes building the recipe more complicated than strictly necessary.

Please move setup-live to its own recipe.

-- 
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.


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


[OE-core] [PATCH v6 1/1] initramfs-framework: module to support boot live image

2017-07-12 Thread wei . tee . ng
From: "Ng, Wei Tee" 

setup-live module is a new module being introduced to integrate the
functionality of init-live.sh into new scriptlet named setup-live in
order to support the live boot image. The udev-extraconf rdepends is
being added to perform automounting. It gets to run before the rootfs
and finish module.

The setup-live scriplet 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.

[YOCTO #11701]

Signed-off-by: Ng, Wei Tee 
---
This version is to re-correct the typo in the message.

 .../initrdscripts/initramfs-framework/setup-live   | 66 ++
 .../initrdscripts/initramfs-framework_1.0.bb   | 13 -
 2 files changed, 77 insertions(+), 2 deletions(-)
 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 000..ec4a139
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/setup-live
@@ -0,0 +1,66 @@
+#/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
+}
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb 
b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
index 67a1b04..211e89d 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
@@ -13,7 +13,8 @@ SRC_URI = "file://init \
file://mdev \
file://udev \
file://e2fs \
-   file://debug"
+   file://debug \
+   file://setup-live"
 
 S = "${WORKDIR}"
 
@@ -25,6 +26,9 @@ do_install() {
 install -m 0755 ${WORKDIR}/rootfs ${D}/init.d/90-rootfs
 install -m 0755 ${WORKDIR}/finish ${D}/init.d/99-finish
 
+# setup-live
+install -m 0755 ${WORKDIR}/setup-live ${D}/init.d/80-setup-live
+
 # mdev
 install -m 0755 ${WORKDIR}/mdev ${D}/init.d/01-mdev
 
@@ -48,7 +52,8 @@