Patchwork [6/6] mkefidisk: Use msdos partition tables

login
register
mail settings
Submitter Darren Hart
Date March 19, 2013, 10:15 p.m.
Message ID <4937a2369946171db2f84833e997702f820d37bc.1363731212.git.dvhart@linux.intel.com>
Download mbox | patch
Permalink /patch/46515/
State Accepted
Commit 049ea1e0a6a1017a5020de38bd7ce93515bd62f4
Headers show

Comments

Darren Hart - March 19, 2013, 10:15 p.m.
While GPT works fine when writing to actual media, it cannot be reliably
used for distributing disk images as it requires the backup table to be
on the last block on the device, which of course varies from device to
device. Use MSDOS tables instead.

Use mkfs to label the filesystems as msdos tables do not support
partition labeling.

Signed-off-by: Darren Hart <dvhart@linux.intel.com>
---
 scripts/contrib/mkefidisk.sh | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)
Koen Kooi - March 20, 2013, 7:49 a.m.
Op 19 mrt. 2013, om 23:15 heeft Darren Hart <dvhart@linux.intel.com> het volgende geschreven:

> While GPT works fine when writing to actual media, it cannot be reliably
> used for distributing disk images as it requires the backup table to be
> on the last block on the device, which of course varies from device to
> device. Use MSDOS tables instead.
> 
> Use mkfs to label the filesystems as msdos tables do not support
> partition labeling.

I was wondering if it's possible to run parted in fixup mode manually. I did that on the target itself to fix the off-by-one error, so running it on the host should work as well.

regards,

Koen


> 
> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
> ---
> scripts/contrib/mkefidisk.sh | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
> 
> diff --git a/scripts/contrib/mkefidisk.sh b/scripts/contrib/mkefidisk.sh
> index 6ff12af..acadd49 100755
> --- a/scripts/contrib/mkefidisk.sh
> +++ b/scripts/contrib/mkefidisk.sh
> @@ -156,20 +156,18 @@ echo "*****************"
> echo "Deleting partition table on $DEVICE ..."
> dd if=/dev/zero of=$DEVICE bs=512 count=2
> 
> -echo "Creating new partition table (GPT) on $DEVICE ..."
> -parted $DEVICE mklabel gpt
> +# Use MSDOS by default as GPT cannot be reliably distributed in disk image form
> +# as it requires the backup table to be on the last block of the device, which
> +# of course varies from device to device.
> +echo "Creating new partition table (MSDOS) on $DEVICE ..."
> +parted $DEVICE mklabel msdos
> 
> echo "Creating boot partition on $BOOTFS"
> parted $DEVICE mkpart primary 0% $BOOT_SIZE
> 
> -# GPT doesn't have a real boot flag, parted will change the GUID to EFI System
> -# Partition, which is what we want
> echo "Enabling boot flag on $BOOTFS"
> parted $DEVICE set 1 boot on
> 
> -echo "Labeling $BOOTFS as EFI System Partition"
> -parted $DEVICE name 1 "EFI System Partition"
> -
> echo "Creating ROOTFS partition on $ROOTFS"
> parted $DEVICE mkpart primary $ROOTFS_START $ROOTFS_END
> 
> @@ -184,10 +182,10 @@ parted $DEVICE print
> #
> echo ""
> echo "Formatting $BOOTFS as vfat..."
> -mkfs.vfat $BOOTFS
> +mkfs.vfat $BOOTFS -n "efi"
> 
> echo "Formatting $ROOTFS as ext3..."
> -mkfs.ext3 $ROOTFS
> +mkfs.ext3 $ROOTFS -L "root"
> 
> echo "Formatting swap partition...($SWAP)"
> mkswap $SWAP
> -- 
> 1.8.1.2
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Darren Hart - March 20, 2013, 4:48 p.m.
On 03/20/2013 12:49 AM, Koen Kooi wrote:
> 
> Op 19 mrt. 2013, om 23:15 heeft Darren Hart <dvhart@linux.intel.com> het volgende geschreven:
> 
>> While GPT works fine when writing to actual media, it cannot be reliably
>> used for distributing disk images as it requires the backup table to be
>> on the last block on the device, which of course varies from device to
>> device. Use MSDOS tables instead.
>>
>> Use mkfs to label the filesystems as msdos tables do not support
>> partition labeling.
> 
> I was wondering if it's possible to run parted in fixup mode
> manually. I did that on the target itself to fix the off-by-one
> error, so running it on the host should work as well.

I thought of that as well, but that doesn't help with the disk image
problem. I don't like the idea of shipping images that have to be fixed
on first boot without any clear motivation. For the purposes of these
images, I don't see any clear advantage of GPT.

--
Darren

> 
> regards,
> 
> Koen
> 
> 
>>
>> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
>> ---
>> scripts/contrib/mkefidisk.sh | 16 +++++++---------
>> 1 file changed, 7 insertions(+), 9 deletions(-)
>>
>> diff --git a/scripts/contrib/mkefidisk.sh b/scripts/contrib/mkefidisk.sh
>> index 6ff12af..acadd49 100755
>> --- a/scripts/contrib/mkefidisk.sh
>> +++ b/scripts/contrib/mkefidisk.sh
>> @@ -156,20 +156,18 @@ echo "*****************"
>> echo "Deleting partition table on $DEVICE ..."
>> dd if=/dev/zero of=$DEVICE bs=512 count=2
>>
>> -echo "Creating new partition table (GPT) on $DEVICE ..."
>> -parted $DEVICE mklabel gpt
>> +# Use MSDOS by default as GPT cannot be reliably distributed in disk image form
>> +# as it requires the backup table to be on the last block of the device, which
>> +# of course varies from device to device.
>> +echo "Creating new partition table (MSDOS) on $DEVICE ..."
>> +parted $DEVICE mklabel msdos
>>
>> echo "Creating boot partition on $BOOTFS"
>> parted $DEVICE mkpart primary 0% $BOOT_SIZE
>>
>> -# GPT doesn't have a real boot flag, parted will change the GUID to EFI System
>> -# Partition, which is what we want
>> echo "Enabling boot flag on $BOOTFS"
>> parted $DEVICE set 1 boot on
>>
>> -echo "Labeling $BOOTFS as EFI System Partition"
>> -parted $DEVICE name 1 "EFI System Partition"
>> -
>> echo "Creating ROOTFS partition on $ROOTFS"
>> parted $DEVICE mkpart primary $ROOTFS_START $ROOTFS_END
>>
>> @@ -184,10 +182,10 @@ parted $DEVICE print
>> #
>> echo ""
>> echo "Formatting $BOOTFS as vfat..."
>> -mkfs.vfat $BOOTFS
>> +mkfs.vfat $BOOTFS -n "efi"
>>
>> echo "Formatting $ROOTFS as ext3..."
>> -mkfs.ext3 $ROOTFS
>> +mkfs.ext3 $ROOTFS -L "root"
>>
>> echo "Formatting swap partition...($SWAP)"
>> mkswap $SWAP
>> -- 
>> 1.8.1.2
>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>

Patch

diff --git a/scripts/contrib/mkefidisk.sh b/scripts/contrib/mkefidisk.sh
index 6ff12af..acadd49 100755
--- a/scripts/contrib/mkefidisk.sh
+++ b/scripts/contrib/mkefidisk.sh
@@ -156,20 +156,18 @@  echo "*****************"
 echo "Deleting partition table on $DEVICE ..."
 dd if=/dev/zero of=$DEVICE bs=512 count=2
 
-echo "Creating new partition table (GPT) on $DEVICE ..."
-parted $DEVICE mklabel gpt
+# Use MSDOS by default as GPT cannot be reliably distributed in disk image form
+# as it requires the backup table to be on the last block of the device, which
+# of course varies from device to device.
+echo "Creating new partition table (MSDOS) on $DEVICE ..."
+parted $DEVICE mklabel msdos
 
 echo "Creating boot partition on $BOOTFS"
 parted $DEVICE mkpart primary 0% $BOOT_SIZE
 
-# GPT doesn't have a real boot flag, parted will change the GUID to EFI System
-# Partition, which is what we want
 echo "Enabling boot flag on $BOOTFS"
 parted $DEVICE set 1 boot on
 
-echo "Labeling $BOOTFS as EFI System Partition"
-parted $DEVICE name 1 "EFI System Partition"
-
 echo "Creating ROOTFS partition on $ROOTFS"
 parted $DEVICE mkpart primary $ROOTFS_START $ROOTFS_END
 
@@ -184,10 +182,10 @@  parted $DEVICE print
 #
 echo ""
 echo "Formatting $BOOTFS as vfat..."
-mkfs.vfat $BOOTFS
+mkfs.vfat $BOOTFS -n "efi"
 
 echo "Formatting $ROOTFS as ext3..."
-mkfs.ext3 $ROOTFS
+mkfs.ext3 $ROOTFS -L "root"
 
 echo "Formatting swap partition...($SWAP)"
 mkswap $SWAP