From patchwork Tue Dec 18 12:38:27 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v3] init-live: default to initrd shell if image isn't found Date: Tue, 18 Dec 2012 12:38:27 -0000 From: Alexandru DAMIAN X-Patchwork-Id: 41261 Message-Id: <1355834307-29583-1-git-send-email-alexandru.damian@intel.com> To: openembedded-core@lists.openembedded.org, ross.burton@intel.com, damien.lespiau@intel.com, dvhart@linux.intel.com, radu.moisan@intel.com, otavio@ossystems.com.br Cc: Alexandru DAMIAN From: Alexandru DAMIAN 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. Signed-off-by: Alexandru DAMIAN --- meta/recipes-core/initrdscripts/files/init-live.sh | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh index c591f0d..e8d7f70 100644 --- a/meta/recipes-core/initrdscripts/files/init-live.sh +++ b/meta/recipes-core/initrdscripts/files/init-live.sh @@ -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