1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-09 05:29:32 +00:00

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]

(From OE-Core rev: 4d3300e85a8e65207a415b9cf84c9fa1f71b0406)

Signed-off-by: Ng, Wei Tee <wei.tee.ng@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ng, Wei Tee
2017-07-23 16:51:55 -07:00
committed by Richard Purdie
parent 05e4f13971
commit 716d5d9e65
2 changed files with 77 additions and 2 deletions
@@ -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
}
@@ -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"