init-live: default to initrd shell if image isn't found

Adds "debugshell" command line parameter for live/install images.

If the init live fails to find and mount a root-fs image,
dumps to a shell after timeout so that the developer can figure
what's wrong.

Timeout defaults to 30 seconds, but it can be changed as param
argument.

Prior art in Ubuntu. Also, leaving a system stale isn't good form.

(From OE-Core rev: 6f99e530822ac32f32615590e22a9758ac210e84)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexandru DAMIAN 2012-12-18 14:38:27 +02:00 committed by Richard Purdie
parent ccc394e7c6
commit ed5d870c70
1 changed files with 21 additions and 1 deletions

View File

@ -45,7 +45,13 @@ read_args() {
console_params=$arg
else
console_params="$console_params $arg"
fi
fi ;;
debugshell*)
if [ -z "$optarg" ]; then
shelltimeout=30
else
shelltimeout=$optarg
fi
esac
done
}
@ -75,6 +81,7 @@ early_setup
read_args
echo "Waiting for removable media..."
C=0
while true
do
for i in `ls /media 2>/dev/null`; do
@ -90,6 +97,19 @@ do
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"
ls /dev/sd*
fatal "Cannot find rootfs.img file in /media/* , dropping to a shell "
fi
C=$(( C + 1 ))
fi
sleep 1
done