68 lines
2.5 KiB
Bash
68 lines
2.5 KiB
Bash
set -ex
|
|
|
|
DISK_NAME=${PWD}/decode-sgdisk.img
|
|
DISK_NAME=/dev/sdb
|
|
# cleanup
|
|
touch $DISK_NAME
|
|
rm $DISK_NAME
|
|
|
|
# Partition sizes in MiB
|
|
IDBLOADER_SIZE=4
|
|
UBOOT_SIZE=8
|
|
TRUST_SIZE=12
|
|
BOOT_SIZE=16
|
|
ROOT_SIZE=128
|
|
|
|
# Define max sizes and offsets
|
|
IDBLOADER_START=64 # was 64 but report it is not aligned, 2048, which is 1MB alignment.
|
|
IDBLOADER_OFFSET=$((${IDBLOADER_SIZE}*1024*1024/512)) # 8192 4MiB 8192
|
|
UBOOT_OFFSET=$((${UBOOT_SIZE}*1024*1024/512)) # 16382 8MiB 16384
|
|
TRUST_OFFSET=$((${TRUST_SIZE}*1024*1024/512)) # 24575 12MiB 24575
|
|
BOOT_OFFSET=$((${BOOT_SIZE}*1024*1024/512)) # 32768 16MiB 32768
|
|
ROOT_OFFSET=$((${ROOT_SIZE}*1024*1024/512)) # 524288 128MiB 262144
|
|
|
|
MIN_SIZE=$((500*1000*1000/512)) # 976562 500MiB
|
|
SIZE_STEP=$((100*1000*1000/512)) # 195312 100MiB
|
|
MAX_SIZE=$((8*1000*1000*1000/512)) # 15625000 8GiB
|
|
|
|
# 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 3 - Create partition using start and end values for partitioning the `idbloader` partition.
|
|
#STARTSECTOR=`/sbin/sgdisk --first-aligned-in-largest ${TARGET}|sed -sn 2p`
|
|
STARTSECTOR=${IDBLOADER_START}
|
|
/sbin/sgdisk --print --set-alignment=64 --mbrtogpt --new=3:${STARTSECTOR}:+${IDBLOADER_SIZE}MB ${TARGET}
|
|
/sbin/sgdisk --print --change-name=3:"idbloader" --typecode=3:8300 ${TARGET}
|
|
|
|
## Partition 4 - Create partition using start and end values for partitioning the `uboot` partition.
|
|
ENDSECTOR=`/sbin/sgdisk --end-of-largest ${TARGET}|sed -sn 2p`
|
|
/sbin/sgdisk --print --new=4:-${UBOOT_SIZE}MB:${ENDSECTOR} ${TARGET}
|
|
/sbin/sgdisk --print --change-name=4:"uboot" --typecode=4:8300 ${TARGET}
|
|
|
|
## Partition 5 - the 12MB partition for trust partition
|
|
ENDSECTOR=`/sbin/sgdisk --end-of-largest ${TARGET}|sed -sn 2p`
|
|
/sbin/sgdisk --print --new=5:-${TRUST_SIZE}MB:${ENDSECTOR} ${TARGET}
|
|
/sbin/sgdisk --print --change-name=5:"atp" --typecode=5:8300 ${TARGET}
|
|
|
|
## Partition 1 - the 16MB partition for boot
|
|
ENDSECTOR=`/sbin/sgdisk --end-of-largest ${TARGET}|sed -sn 2p`
|
|
/sbin/sgdisk --print --new=1:-${BOOT_SIZE}MB:${ENDSECTOR} ${TARGET}
|
|
/sbin/sgdisk --print --change-name=1:"boot" --typecode=1:EF00 ${TARGET}
|
|
|
|
## Partition 2 - the main partition for root
|
|
/sbin/sgdisk --print --largest-new=2 ${TARGET}
|
|
/sbin/sgdisk --print --change-name=2:root --typecode=2:8305 ${TARGET}
|
|
|
|
/sbin/sgdisk -print ${TARGET}
|