From 254899824900f2e8c6a34d2ad1b8cbea91acb4ae Mon Sep 17 00:00:00 2001 From: Jason Wessel Date: Fri, 27 Sep 2013 01:01:20 +0000 Subject: mkefidisk.sh: Allow using a loopback mounted file It should be possible to generate a disk to a file using a loopback device with mkefidisk.sh, which is useful for booting simulators. To make this possible the partitions for the loop back need to work similarly to the mmc devices. The mkfs.vfat also requires and additional argument to force it to write to something other then a real disk. Example: qemu-img create -f raw bigdisk 4G dev=`sudo losetup -f` sudo losetup $dev bigdisk mkefidisk.sh $dev tmp-eglibc/deploy/images/qemux86/core-image-minimal-qemux86.hddimg /dev/sda sudo losetup -d $dev Note: Also a bug was fixed in the mkefidisk.sh where if the disk you are writing to initially has an invalid label the size of the first partition will be computed incorrectly. For the simulator disk creation this is generally always the case, but this can happen with real hardware as well. Signed-off-by: Jason Wessel Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- scripts/contrib/mkefidisk.sh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/contrib/mkefidisk.sh b/scripts/contrib/mkefidisk.sh index af06b4bd5b..c86849d395 100755 --- a/scripts/contrib/mkefidisk.sh +++ b/scripts/contrib/mkefidisk.sh @@ -134,6 +134,11 @@ fi # Partition $DEVICE # DEVICE_SIZE=$(parted $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 + DEVICE_SIZE=$(parted $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)) ROOTFS_START=$((BOOT_SIZE)) @@ -142,7 +147,7 @@ SWAP_START=$((ROOTFS_END)) # MMC devices use a partition prefix character 'p' PART_PREFIX="" -if [ ! "${DEVICE#/dev/mmcblk}" = "${DEVICE}" ]; then +if [ ! "${DEVICE#/dev/mmcblk}" = "${DEVICE}" ] || [ ! "${DEVICE#/dev/loop}" = "${DEVICE}" ]; then PART_PREFIX="p" fi BOOTFS=$DEVICE${PART_PREFIX}1 @@ -197,7 +202,12 @@ unmount_device # echo "" echo "Formatting $BOOTFS as vfat..." -mkfs.vfat $BOOTFS -n "efi" +if [ ! "${DEVICE#/dev/loop}" = "${DEVICE}" ]; then + mkfs.vfat -I $BOOTFS -n "efi" +else + mkfs.vfat $BOOTFS -n "efi" + +fi echo "Formatting $ROOTFS as ext3..." mkfs.ext3 $ROOTFS -L "root" -- cgit 1.2.3-korg