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