Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Saul Wold <sgw@linux.intel.com>
To: Bruno Bottazzini <bruno.bottazzini@intel.com>,
	openembedded-core@lists.openembedded.org
Subject: Re: [PATCH] mkefidisk: Create interactive menu for the script
Date: Tue, 8 Sep 2015 08:15:01 -0700	[thread overview]
Message-ID: <55EEFB75.7050300@linux.intel.com> (raw)
In-Reply-To: <1441405142-7497-2-git-send-email-bruno.bottazzini@intel.com>

On 09/04/2015 03:19 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.
>
> Signed-off-by: Bruno Bottazzini <bruno.bottazzini@intel.com>
> ---
>   scripts/contrib/mkefidisk.sh | 63 ++++++++++++++++++++++++++++++++++++++++----
>   1 file changed, 58 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/contrib/mkefidisk.sh b/scripts/contrib/mkefidisk.sh
> index 55f72b0..66e0e58 100755
> --- a/scripts/contrib/mkefidisk.sh
> +++ b/scripts/contrib/mkefidisk.sh
> @@ -152,8 +152,55 @@ unmount() {
>   # Parse and validate arguments
>   #
>   if [ $# -lt 3 ] || [ $# -gt 4 ]; then
> -	usage
> -	exit 1
> +    if [ $# -eq 1 ]; then
> +        AVAILABLE_DISK=`lsblk | grep "disk" | cut -f 1 -d " "`
> +        X=0
> +        for disk in `echo $AVAILABLE_DISK`; do
> +            mounted=`blkid -o list | grep "/dev/$disk" | grep "not mounted"`
Is there any way to not call blkid multiple time (ie save the output and 
use it once?


Are the lsblk and blkid commands guaranteed to be installed on most 
machines?

Also this seems to have matched my root disk, which again concerns me, I 
am still not convinced that a selection system like this is safe.

> +            if [ -n "$mounted" ]; then
> +                UNMOUNTED_AVAILABLES="$UNMOUNTED_AVAILABLES /dev/$disk\n"

I think the \n is not needed here, what shell are you using, with Bash I 
get the following output:

0 - /dev/sda
1 - /dev/sdb
2 - /dev/mmcblk0
Choose unmounted device number: 1

Choose a name of the device that will be boot from
Recommended name is: /dev/sda\n
Is target device okay? [y/N]: y

Usage: mkefidisk.sh [-v] DEVICE HDDIMG TARGET_DEVICE
        -v: Verbose debug
        DEVICE: The device to write the image to, e.g. /dev/sdh
        HDDIMG: The hddimg file to generate the efi disk from
        TARGET_DEVICE: The device the target will boot from, e.g. 
/dev/mmcblk0
Device /dev/sdb\n cannot be found

Note the \n above in the choose a name and then the trailing \n here 
with the device not being found.



> +                info "$X - /dev/$disk"
> +                X=`expr $X + 1`
> +            fi
> +        done
> +        if [ $X -eq 0 ]; then
> +            die "No unmounted device found."
> +        fi
> +        read -p "Choose unmounted device number: " DISK_NUMBER
> +        X=0
> +        for line in `echo $UNMOUNTED_AVAILABLES`; 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"

You are still outputting the \n 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 +209,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
>
This change I like, if done with checking for 2 parameter (image and 
disk to flash, the 3 paramter can be determined as you have with best 
guess of /dev/sda if it's an sd and mmc if it's a /dev/mmc flash device.

Sau!


>   LINK=$(readlink $DEVICE)
>   if [ $? -eq 0 ]; then
>


  parent reply	other threads:[~2015-09-08 15:15 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-04 22:19 [PATCH] mkefidisk: Create interactive menu for the script Bruno Bottazzini
2015-09-04 22:19 ` Bruno Bottazzini
2015-09-08 13:19   ` Bottazzini, Bruno
2015-09-08 15:15   ` Saul Wold [this message]
2015-09-08 16:53     ` Bottazzini, Bruno
2015-09-09 21:36       ` Saul Wold
  -- strict thread matches above, loose matches on Subject: below --
2015-09-08 21:45 [PATCH V3] " Bruno Bottazzini
2015-09-08 21:45 ` [PATCH] " Bruno Bottazzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55EEFB75.7050300@linux.intel.com \
    --to=sgw@linux.intel.com \
    --cc=bruno.bottazzini@intel.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox