41f503fef3
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
55 lines
1.5 KiB
Bash
Executable file
55 lines
1.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
|
|
set -x
|
|
fi
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
source $_LIB/die
|
|
[ -n "$IMAGE_BLOCK_DEVICE" ] || die "Image block device not set"
|
|
|
|
# Create 2 partitions for PPC, one for PReP boot and other for root
|
|
if [[ "$ARCH" =~ "ppc" ]] ; then
|
|
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
|
|
sudo parted -a optimal -s $IMAGE_BLOCK_DEVICE \
|
|
mklabel msdos \
|
|
mkpart primary 1MiB 100% \
|
|
set 1 boot on
|
|
fi
|
|
|
|
sudo partprobe $IMAGE_BLOCK_DEVICE
|
|
|
|
# To ensure no race conditions exist from calling partprobe
|
|
sudo udevadm settle
|
|
|
|
# If the partition isn't under /dev/loop*p1, create it with kpartx
|
|
DM=
|
|
if [ ! -e "${IMAGE_BLOCK_DEVICE}p1" ]; then
|
|
DM=${IMAGE_BLOCK_DEVICE/#\/dev/\/dev\/mapper}
|
|
# If running inside Docker, make our nodes manually, because udev will not be working.
|
|
if [ -f /.dockerenv ]; then
|
|
# kpartx cannot run in sync mode in docker.
|
|
sudo kpartx -av $TMP_IMAGE_PATH
|
|
sudo dmsetup --noudevsync mknodes
|
|
else
|
|
sudo kpartx -asv $TMP_IMAGE_PATH
|
|
fi
|
|
elif [[ "$ARCH" =~ "ppc" ]]; then
|
|
sudo kpartx -asv $TMP_IMAGE_PATH
|
|
fi
|
|
|
|
if [ -n "$DM" ]; then
|
|
echo "IMAGE_BLOCK_DEVICE=${DM}p1"
|
|
elif [[ "$ARCH" =~ "ppc" ]]; then
|
|
DM=${IMAGE_BLOCK_DEVICE/#\/dev/\/dev\/mapper}
|
|
echo "IMAGE_BLOCK_DEVICE=${DM}p2"
|
|
else
|
|
echo "IMAGE_BLOCK_DEVICE=${IMAGE_BLOCK_DEVICE}p1"
|
|
fi
|