From: Alexandru DAMIAN <[email protected]> udevd moved location and isn't in $PATH anymore, so use an absolute path to start it.
The control socket path moved too, so mkdir the directory it's in. Mounts the new devtmpfs on /dev device tree. Adds a menu to boot a disk partition instead of a file rootfs image, useful to rescue a system. Dumps safely to a shell if a root filesystem cannot be found Signed-off-by: Ross Burton <[email protected]> Signed-off-by: Alexandru Damian <[email protected]> --- meta/recipes-core/initrdscripts/files/init-live.sh | 52 +++++++++++++++++--- .../initrdscripts/initramfs-framework/udev | 6 +-- .../initrdscripts/initramfs-framework_1.0.bb | 2 + .../initrdscripts/initramfs-live-boot_1.0.bb | 2 +- 4 files changed, 52 insertions(+), 10 deletions(-) diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh index 5682fd1..229a71e 100644 --- a/meta/recipes-core/initrdscripts/files/init-live.sh +++ b/meta/recipes-core/initrdscripts/files/init-live.sh @@ -14,12 +14,14 @@ early_setup() { mkdir -p /sys mount -t proc proc /proc mount -t sysfs sysfs /sys + mount -t devtmpfs none /dev # support modular kernel modprobe isofs 2> /dev/null mkdir -p /run - udevd --daemon + mkdir -p /var/run + /lib/udev/udevd --daemon udevadm trigger --action=add } @@ -68,13 +70,50 @@ fatal() { early_setup +# wait for the udevd to settle +echo "Waiting for udev to settle..." +sleep 3 + [ -z "$CONSOLE" ] && CONSOLE="/dev/console" read_args -echo "Waiting for removable media..." -while true +# boot partiton menu, if one or more bootable partitions exist +BOOTMENU=`ls /media/sd*/sbin/init 2>/dev/null | wc -l` +if [ $BOOTMENU -gt 0 ]; then + choice=0 + echo "1). boot live ramfs image (default)" + count=2 + for i in `ls /media/sd*/sbin/init 2>/dev/null | cut -d "/" -f 3`; do + echo $count"). boot /dev/"$i + eval choicecmd$count=$i + count=$(( count + 1)) + done + echo + echo -n "Your choice (timeout 3 seconds): " + read -t 3 choice + if [ $choice -le 0 ]; then + choice=1 #default value + fi + + if [ $choice -gt 1 ]; then + eval ROOT_MOUNT=/media/\$choicecmd$choice + + echo "Booting local root ... $ROOT_MOUNT" + if [ -d $ROOT_MOUNT ]; then + boot_live_root + else + fatal "Rootfs partition not mounted" + fi + fi +fi + +echo -n "Waiting for removable media... " +CNT=0 +while [ $CNT -le 3 ]; do + echo -n "$CNT " + CNT=$(( $CNT + 1 )) for i in `ls /media 2>/dev/null`; do if [ -f /media/$i/$ROOT_IMAGE ] ; then found="yes" @@ -82,7 +121,7 @@ do elif [ -f /media/$i/isolinux/$ROOT_IMAGE ]; then found="yes" ISOLINUX="isolinux" - break + break fi done if [ "$found" = "yes" ]; then @@ -90,13 +129,14 @@ do fi sleep 1 done +if [ "$found" != "yes" ]; then + fatal "...could not mount removable media, drop to shell" +fi case $label in boot) mkdir $ROOT_MOUNT mknod /dev/loop0 b 7 0 2>/dev/null - - if [ "$UNIONFS" = "yes" ]; then mkdir /rootfs-tmp diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev b/meta/recipes-core/initrdscripts/initramfs-framework/udev index 9ea8aa3..15a1d5b 100644 --- a/meta/recipes-core/initrdscripts/initramfs-framework/udev +++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev @@ -3,8 +3,8 @@ # Licensed on MIT udev_enabled() { - if [ ! -e /sbin/udevd ]; then - debug "/sbin/udev doesn't exist" + if [ ! -e /lib/udev/udevd ]; then + debug "/lib/udev/udev doesn't exist" return 1 fi @@ -14,7 +14,7 @@ udev_enabled() { udev_run() { mkdir -p /run - udevd --daemon > /dev/null + /lib/udev/udevd --daemon > /dev/null udevadm trigger --action=add udevadm settle diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb index 58e41d4..45d6592 100644 --- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb +++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb @@ -3,6 +3,8 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" RDEPENDS = "busybox" +PR = "r1" + inherit allarch SRC_URI = "file://init \ diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb index 137a401..55a8600 100644 --- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb +++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb @@ -5,7 +5,7 @@ RDEPENDS = "udev" DEPENDS = "virtual/kernel" SRC_URI = "file://init-live.sh" -PR = "r10" +PR = "r11" do_compile() { #if grep -q "CONFIG_UNION_FS=y" ${STAGING_KERNEL_DIR}/.config; then -- 1.7.10.4 _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
