A few minor usability fixes for mkefidisk.sh
cover A few minor usability fixes for mkefidisk.sh
The following changes since commit 166f2587468ae71988c610858aad3f7ef67eccba:
bison: don't depend on help2man (2015-04-21 11:29:30 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/mkefidisk
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/mkefidisk
Paul Eggleton (3):
mkefidisk.sh: use script mode when running parted mkefidisk.sh: fix hanging on non-writeable device mkefidisk.sh: be more explicit with device error
scripts/contrib/mkefidisk.sh | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-)
Signature · 1 line
2.1.0
PATCH 1/3 mkefidisk.sh: use script mode when running parted
This avoids parted showing prompts and thus effectively hanging the script in in the case of initially malformed disks.
--- scripts/contrib/mkefidisk.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
scripts/contrib/mkefidisk.sh +9 -9
@@ -218,11 +218,11 @@ mkdir $BOOTFS_MNT || die "Failed to create $BOOTFS_MNT" # # Partition $DEVICE # -DEVICE_SIZE=$(parted $DEVICE unit mb print | grep ^Disk | cut -d" " -f 3 | sed -e "s/MB//") +DEVICE_SIZE=$(parted -s $DEVICE unit mb print | grep ^Disk | cut -d" " -f 3 | sed -e "s/MB//") # If the device size is not reported there may not be a valid label if [ "$DEVICE_SIZE" = "" ] ; then - parted $DEVICE mklabel msdos || die "Failed to create MSDOS partition table" - DEVICE_SIZE=$(parted $DEVICE unit mb print | grep ^Disk | cut -d" " -f 3 | sed -e "s/MB//") + parted -s $DEVICE mklabel msdos || die "Failed to create MSDOS partition table" + DEVICE_SIZE=$(parted -s $DEVICE unit mb print | grep ^Disk | cut -d" " -f 3 | sed -e "s/MB//") fi SWAP_SIZE=$((DEVICE_SIZE*SWAP_RATIO/100)) ROOTFS_SIZE=$((DEVICE_SIZE-BOOT_SIZE-SWAP_SIZE))
@@ -262,22 +262,22 @@ debug "Deleting partition table on $DEVICE" dd if=/dev/zero of=$DEVICE bs=512 count=2 >$OUT 2>&1 || die "Failed to zero beginning of $DEVICE" debug "Creating new partition table (MSDOS) on $DEVICE" -parted $DEVICE mklabel msdos >$OUT 2>&1 || die "Failed to create MSDOS partition table" +parted -s $DEVICE mklabel msdos >$OUT 2>&1 || die "Failed to create MSDOS partition table" debug "Creating boot partition on $BOOTFS" -parted $DEVICE mkpart primary 0% $BOOT_SIZE >$OUT 2>&1 || die "Failed to create BOOT partition" +parted -s $DEVICE mkpart primary 0% $BOOT_SIZE >$OUT 2>&1 || die "Failed to create BOOT partition" debug "Enabling boot flag on $BOOTFS" -parted $DEVICE set 1 boot on >$OUT 2>&1 || die "Failed to enable boot flag" +parted -s $DEVICE set 1 boot on >$OUT 2>&1 || die "Failed to enable boot flag" debug "Creating ROOTFS partition on $ROOTFS" -parted $DEVICE mkpart primary $ROOTFS_START $ROOTFS_END >$OUT 2>&1 || die "Failed to create ROOTFS partition" +parted -s $DEVICE mkpart primary $ROOTFS_START $ROOTFS_END >$OUT 2>&1 || die "Failed to create ROOTFS partition" debug "Creating swap partition on $SWAP" -parted $DEVICE mkpart primary $SWAP_START 100% >$OUT 2>&1 || die "Failed to create SWAP partition" +parted -s $DEVICE mkpart primary $SWAP_START 100% >$OUT 2>&1 || die "Failed to create SWAP partition" if [ $DEBUG -eq 1 ]; then - parted $DEVICE print + parted -s $DEVICE print fi
Signature · 1 line
2.1.0
PATCH 2/3 mkefidisk.sh: fix hanging on non-writeable device
In reply to Paul EggletonIf cleanup() is called early on, as happens when the device isn't writeable, then none of the mount point variables are set; thus the script was calling grep with only one argument and appeared to hang since it was waiting for input on stdin.
--- scripts/contrib/mkefidisk.sh | 3 +++ 1 file changed, 3 insertions(+)
scripts/contrib/mkefidisk.sh +3 -0
@@ -136,6 +136,9 @@ unmount_device() { } unmount() { + if [ "$1" = "" ] ; then + return 0 + fi grep -q $1 /proc/mounts if [ $? -eq 0 ]; then debug "Unmounting $1"
Signature · 1 line
2.1.0
PATCH 3/3 mkefidisk.sh: be more explicit with device error
In reply to Paul Eggleton* Specify whether the device can't be found or can't be written to
* Give a hint to use sudo
--- scripts/contrib/mkefidisk.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
scripts/contrib/mkefidisk.sh +5 -1
@@ -173,7 +173,11 @@ fi if [ ! -w "$DEVICE" ]; then usage - die "Device $DEVICE does not exist or is not writable" + if [ ! -e "${DEVICE}" ] ; then + die "Device $DEVICE cannot be found" + else + die "Device $DEVICE is not writable (need to run under sudo?)" + fi fi if [ ! -e "$HDDIMG" ]; then
Signature · 1 line
2.1.0