[OE-core] [PATCH v2] init-live: default to initrd shell if image isn't found

Damian, Alexandru alexandru.damian at intel.com
Mon Dec 17 19:21:51 UTC 2012


IMHO, if the system has to fatal() here, something VERY wrong is going on.

This isn't your general debug option, this is a last-resort emergency
rescue. I suppose that if you need to debug this, the system is so
problematic you need to deep-dive into it anyway.

I suggest taking it as it is now, and fill in a bugzilla entry about
handling it better in initramfs-framework as it should be.

Alex


On Mon, Dec 17, 2012 at 7:06 PM, Darren Hart <dvhart at linux.intel.com> wrote:

>
>
> On 12/17/2012 04:55 AM, Alex DAMIAN wrote:
> > From: Alexandru DAMIAN <alexandru.damian at intel.com>
> >
> > 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 <alexandru.damian at intel.com>
> > ---
> >  meta/recipes-core/initrdscripts/files/init-live.sh |   18
> +++++++++++++++++-
> >  1 file changed, 17 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..d99a8ea 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,15 @@ 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 "..."
> > +           fatal "Cannot find root image on media, dropping to shell "
>
> I'd recommend being explicity about what it is looking for when
> debugshell is used. Which devices where probed, what was the file it
> looked for. Save the developer from having to find this script in the
> repository and look it up.
>
> --
> Darren
>
> > +      fi
> > +      C=$(( C + 1 ))
> > +  fi
> >    sleep 1
> >  done
> >
> >
>
> --
> Darren Hart
> Intel Open Source Technology Center
> Yocto Project - Technical Lead - Linux Kernel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20121217/d7ab4324/attachment-0002.html>


More information about the Openembedded-core mailing list