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:
committed by
Richard Purdie
parent
05e4f13971
commit
716d5d9e65
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user