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
This commit is contained in:
Ben Kero 2015-12-16 15:51:09 -08:00
parent 9618974f92
commit 41f503fef3

View File

@ -11,36 +11,17 @@ source $_LIB/die
# Create 2 partitions for PPC, one for PReP boot and other for root # Create 2 partitions for PPC, one for PReP boot and other for root
if [[ "$ARCH" =~ "ppc" ]] ; then if [[ "$ARCH" =~ "ppc" ]] ; then
sudo sfdisk --force $IMAGE_BLOCK_DEVICE << EOF sudo parted -a optimal -s $IMAGE_BLOCK_DEVICE \
0,8,41 * mklabel msdos \
,,L mkpart primary 0 8cyl \
; set 1 boot on \
EOF set 1 prep on \
mkpart primary 9cyl 100%
else else
# sfdisk changed around 2.26 and was largely rewritten. The old sudo parted -a optimal -s $IMAGE_BLOCK_DEVICE \
# version defaults to c/h/s and interprets arguments as cylinders. mklabel msdos \
# The new version defaults to sectors. mkpart primary 1MiB 100% \
# set 1 boot on
# 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
fi fi
sudo partprobe $IMAGE_BLOCK_DEVICE sudo partprobe $IMAGE_BLOCK_DEVICE