[OE-core] [PATCH] scripts: Create interactive menu for mkefidisk script

Bottazzini, Bruno bruno.bottazzini at intel.com
Fri Sep 4 13:36:36 UTC 2015


On Fri, 2015-09-04 at 10:32 -0300, Bottazzini, Bruno wrote:
> On Thu, 2015-09-03 at 16:36 -0700, Saul Wold wrote:
> > On 09/01/2015 12:22 PM, Bruno Bottazzini wrote:
> > > If it is passed only the image parameter, it will show some interactive
> > > options to help to conclude the script.
> > >
> > > With this patch it will detect devices available in the machine, asking
> > > to choose what it is wanted to be flashed.
> > >
> > > it will suggest the target device. If it is a SD card the suggestion
> > > is /dev/mmcblk0. If it is a pendrive it will suggest to use /dev/sda.
> > >
> > 
> > I am little concerned by this patch since it allows the root disk to be 
> > selected, even if someone can type it on the command line, but offering 
> > it in list would make someone believe that it was OK.
> 
> You are totally right. 
> 
> However, the script already warn and handles this kind of situation. 
> Also, this gives free will to the user. I don't see this as problem but
> something, besides as you have told the user may pass it as argument

Sorry correcting: s/I don't see this as problem but something/I don't
see this as problem but as feature/

> too. Maybe we can change the header message telling "all detect storage"
> or something like this?
> 
> I was wondering if the user wants to flash a H.D. when running a live CD
> and then maybe the root may be a right choice.
> 
> Since I have started using this patch, it got really faster when it
> comes flashing the device (I don't have to remember parameters every
> time). I think this will be a really good new feature for this script.
> 
> > 
> > 
> > > Signed-off-by: Bruno Bottazzini <bruno.bottazzini at intel.com>
> > > ---
> > >   scripts/contrib/mkefidisk.sh | 60 ++++++++++++++++++++++++++++++++++++++++----
> > >   1 file changed, 55 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/scripts/contrib/mkefidisk.sh b/scripts/contrib/mkefidisk.sh
> > > index 55f72b0..7628de7 100755
> > > --- a/scripts/contrib/mkefidisk.sh
> > > +++ b/scripts/contrib/mkefidisk.sh
> > > @@ -152,8 +152,52 @@ unmount() {
> > >   # Parse and validate arguments
> > >   #
> > >   if [ $# -lt 3 ] || [ $# -gt 4 ]; then
> > > -	usage
> > > -	exit 1
> > > +    if [ $# -eq 1 ]; then
> > > +        AVAILABLE_DISK=`fdisk -l | grep "Disk /" | cut -f 1 -d ':' | cut -f 2 -d ' '`
> > > +        if [ -z "$AVAILABLE_DISK" ]; then
> > > +            die "Starting mkefidisk.sh as root is required"
> > > +        fi
> > > +        echo "Available disks are"
> > > +        X=0
> > > +        for line in `echo $AVAILABLE_DISK`; do
> > > +            info "$X - $line"
> > > +            X=`expr $X + 1`
> > > +        done
> > > +        read -p "Choose flashable device number: " DISK_NUMBER
> > > +        X=0
> > > +        for line in `echo $AVAILABLE_DISK`; do
> > > +            if [ $DISK_NUMBER -eq $X ]; then
> > > +                DISK_TO_BE_FLASHED=$line
> > > +                break
> > > +            else
> > > +                X=`expr $X + 1`
> > > +            fi
> > > +        done
> > > +        if [ -z "$DISK_TO_BE_FLASHED" ]; then
> > > +            die "Option \"$DISK_NUMBER\" is invalid. Choose a valid option"
> > > +        else
> > > +            if [ -z `echo $DISK_TO_BE_FLASHED | grep "mmc"` ]; then
> > > +                TARGET_TO_BE_BOOT="/dev/sda"
> > > +            else
> > > +                TARGET_TO_BE_BOOT="/dev/mmcblk0"
> > > +            fi
> > > +        fi
> > > +        echo ""
> > > +        echo "Choose a name of the device that will be boot from"
> > > +        echo -n "Recommended name is: "
> > > +        info "$TARGET_TO_BE_BOOT\n"
> > The \n usage is probably wrong here.
> > 
> > > +        read -p "Is target device okay? [y/N]: " RESPONSE
> > > +        if [ "$RESPONSE" != "y" ]; then
> > > +            read -p "Choose target device name: " TARGET_TO_BE_BOOT
> > > +        fi
> > > +        echo ""
> > > +        if [ -z "$TARGET_TO_BE_BOOT" ]; then
> > > +            die "Error: choose a valid target name"
> > > +        fi
> > > +    else
> > > +        usage
> > > +	    exit 1
> > > +    fi
> > >   fi
> > >
> > >   if [ "$1" = "-v" ]; then
> > > @@ -162,9 +206,15 @@ if [ "$1" = "-v" ]; then
> > >   	shift
> > >   fi
> > >
> > > -DEVICE=$1
> > > -HDDIMG=$2
> > > -TARGET_DEVICE=$3
> > > +if [ -z "$AVAILABLE_DISK" ]; then
> > > +    DEVICE=$1
> > > +    HDDIMG=$2
> > > +    TARGET_DEVICE=$3
> > > +else
> > > +    DEVICE=$DISK_TO_BE_FLASHED
> > > +    HDDIMG=$1
> > > +    TARGET_DEVICE=$TARGET_TO_BE_BOOT
> > > +fi
> > >
> > >   LINK=$(readlink $DEVICE)
> > >   if [ $? -eq 0 ]; then
> > >
> 
> 





More information about the Openembedded-core mailing list