From 41f503fef362478a000ac47882b5c1223972e145 Mon Sep 17 00:00:00 2001 From: Ben Kero Date: Wed, 16 Dec 2015 15:51:09 -0800 Subject: [PATCH] Replace sfdisk partitioning with parted A TODO was placed on the partitioning section of the vm element to replace sfdisk with a saner (and less arcane) way of partitioning. It suggested parted for replacement. This changeset should reproduce the same disk label and partition layout as sfdisk, but with less ioctl errors and version dependency. It will also ensure partition alignment. Change-Id: I5d8d75131458b73bfb05f80f1bfa7e2970e004b3 --- elements/vm/block-device.d/10-partition | 39 +++++++------------------ 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/elements/vm/block-device.d/10-partition b/elements/vm/block-device.d/10-partition index c72c40dd..df0732ed 100755 --- a/elements/vm/block-device.d/10-partition +++ b/elements/vm/block-device.d/10-partition @@ -11,36 +11,17 @@ source $_LIB/die # Create 2 partitions for PPC, one for PReP boot and other for root if [[ "$ARCH" =~ "ppc" ]] ; then - sudo sfdisk --force $IMAGE_BLOCK_DEVICE << EOF -0,8,41 * -,,L -; -EOF + sudo parted -a optimal -s $IMAGE_BLOCK_DEVICE \ + mklabel msdos \ + mkpart primary 0 8cyl \ + set 1 boot on \ + set 1 prep on \ + mkpart primary 9cyl 100% else - # sfdisk changed around 2.26 and was largely rewritten. The old - # version defaults to c/h/s and interprets arguments as cylinders. - # The new version defaults to sectors. - # - # Luckily, the old version has a -uS flag (ignored by the new - # version) to interpret arguments as sectors. However, it - # incorrectly calculates the c/h/s offset when finding free space, - # and gets upset [1], requiring the use of --force. - # - # TODO: switch this to parted, or something saner (is there such a - # thing when talking about partitioning?) - # - # The below command creates a partition that starts at 1MiB -- - # which is the standard place to start a partition these days -- - # and fills up the disk. The zeros are to ignore the other 3 - # primary partitions (probably not needed, but left for safety). - # - # [1] https://bugs.launchpad.net/ubuntu/+source/util-linux/+bug/1481158 - sudo sfdisk -uS --force $IMAGE_BLOCK_DEVICE << EOF -2048 + L * -0 0; -0 0; -0 0; -EOF + sudo parted -a optimal -s $IMAGE_BLOCK_DEVICE \ + mklabel msdos \ + mkpart primary 1MiB 100% \ + set 1 boot on fi sudo partprobe $IMAGE_BLOCK_DEVICE