partition_scripts/test-partitioning_sgdisk_ub...

63 lines
2.3 KiB
Bash

set -ex
DISK_NAME=${PWD}/ubuntu-sgdisk.img
#DISK_NAME=/dev/sdb
# cleanup
touch $DISK_NAME
rm $DISK_NAME
# Partition sizes in MiB
EFI_SIZE=4
SWAP_SIZE=8
BOOT_SIZE=16
ROOT_SIZE=128
# Define max sizes and offsets
EFI_START=2048 # was 64 but report it is not aligned, 2048, which is 1MB alignment.
EFI_OFFSET=$((${EFI_SIZE}*1024*1024/512)) # 8192 4 MiB 8192
SWAP_OFFSET=$((${SWAP_SIZE}*1024*1024/512)) # 16382 8 MiB 16384
BOOT_OFFSET=$((${BOOT_SIZE}*1024*1024/512)) # 32768 16 MiB 32768
ROOT_OFFSET=$((${ROOT_SIZE}*1024*1024/512)) # 524288 128 MiB 262144
MIN_SIZE=$((500*1000*1000/512)) # 976562 500 MiB
SIZE_STEP=$((100*1000*1000/512)) # 195312 100 MiB
MAX_SIZE=$((8*1000*1000*1000/512)) # 15625000 8 GiB
# Create
rm -f "$DISK_NAME"
truncate --size "$((MAX_SIZE*512))" "$DISK_NAME"
bootfs="fat32"
rootfs="ext2"
alignment_type="optimal" # none, cylinder, minimal, optimal
# Create partitions
echo Updating GPT...
TARGET=${DISK_NAME}
/sbin/sgdisk --zap-all ${TARGET}
## Partition 1 - Create partition using start and end values for partitioning the `EFI` partition.
#STARTSECTOR=`/sbin/sgdisk --first-aligned-in-largest ${TARGET}|sed -sn 2p`
STARTSECTOR=${EFI_START}
/sbin/sgdisk --print --set-alignment=${STARTSECTOR} --mbrtogpt --new=1:${STARTSECTOR}:+${EFI_SIZE}MB ${TARGET}
/sbin/sgdisk --print --change-name=1:"EFI System Partition" --typecode=1:EF00 ${TARGET}
## Partition 2 - Create partition using start and end values for partitioning the `swap` partition.
#ENDSECTOR=`/sbin/sgdisk --end-of-largest ${TARGET}|sed -sn 2p`
STARTSECTOR=`/sbin/sgdisk --first-in-largest ${TARGET}|sed -sn 2p`
/sbin/sgdisk --print --new=2:${STARTSECTOR}:+${SWAP_SIZE}MB ${TARGET}
/sbin/sgdisk --print --change-name=2:"Linux swap" --typecode=2:8200 ${TARGET}
## Partition 3 - upto 2GB partition for boot
#ENDSECTOR=`/sbin/sgdisk --end-of-largest ${TARGET}|sed -sn 2p`
STARTSECTOR=`/sbin/sgdisk --first-in-largest ${TARGET}|sed -sn 2p`
/sbin/sgdisk --print --new=3:${STARTSECTOR}:+${BOOT_SIZE}MB ${TARGET}
/sbin/sgdisk --print --change-name=3:boot --typecode=3:BE00 ${TARGET}
## Partition 4 - the main partition for root
/sbin/sgdisk --print --largest-new=4 ${TARGET}
/sbin/sgdisk --print --change-name=4:root --typecode=4:BF00 ${TARGET}
/sbin/gdisk -print ${TARGET}