diff options
author | Ng, Wei Tee <wei.tee.ng@intel.com> | 2017-07-23 16:51:55 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-07-27 22:20:16 +0100 |
commit | 4d3300e85a8e65207a415b9cf84c9fa1f71b0406 (patch) | |
tree | 59e3e44f8b991e24a4c29be7e56047a8e96e0e1c /meta | |
parent | 96c54b2ceee7cdeb40efaa3f224766c5ea65d181 (diff) | |
download | openembedded-core-4d3300e85a8e65207a415b9cf84c9fa1f71b0406.tar.gz openembedded-core-4d3300e85a8e65207a415b9cf84c9fa1f71b0406.tar.bz2 openembedded-core-4d3300e85a8e65207a415b9cf84c9fa1f71b0406.zip |
initramfs-framework: module to support boot live image
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 <wei.tee.ng@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-core/initrdscripts/initramfs-framework/setup-live | 66 | ||||
-rw-r--r-- | meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb | 13 |
2 files changed, 77 insertions, 2 deletions
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 0000000000..ec4a139084 --- /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 67a1b04d28..211e89d5d3 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 @@ PACKAGES = "${PN}-base \ initramfs-module-udev \ initramfs-module-e2fs \ initramfs-module-rootfs \ - initramfs-module-debug" + initramfs-module-debug \ + initramfs-module-setup-live" FILES_${PN}-base = "/init /init.d/99-finish /dev" @@ -68,6 +73,10 @@ SUMMARY_initramfs-module-udev = "initramfs support for udev" RDEPENDS_initramfs-module-udev = "${PN}-base udev" FILES_initramfs-module-udev = "/init.d/01-udev" +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" + SUMMARY_initramfs-module-e2fs = "initramfs support for ext4/ext3/ext2 filesystems" RDEPENDS_initramfs-module-e2fs = "${PN}-base" FILES_initramfs-module-e2fs = "/init.d/10-e2fs" |