+ part1_start_sector=2048
+
+ if [ $reserve_mb -gt 0 ]; then
+ reserve_sector_num=$(expr $reserve_mb \* 2048 + 33)
+ part1_end_sector=$(expr $sector_num - $reserve_sector_num - $VENTOY_SECTOR_NUM - 1)
+ else
+ part1_end_sector=$(expr $sector_num - $VENTOY_SECTOR_NUM - 34)
+ fi
+
+ part2_start_sector=$(expr $part1_end_sector + 1)
+
+ modsector=$(expr $part2_start_sector % 8)
+ if [ $modsector -gt 0 ]; then
+ vtdebug "modsector:$modsector need to be aligned with 4KB"
+ part1_end_sector=$(expr $part1_end_sector - $modsector)
+ part2_start_sector=$(expr $part1_end_sector + 1)
+ fi
+
+ part2_end_sector=$(expr $part2_start_sector + $VENTOY_SECTOR_NUM - 1)
+
+ export part2_start_sector
+
+ vtdebug "part1_start_sector=$part1_start_sector part1_end_sector=$part1_end_sector"
+ vtdebug "part2_start_sector=$part2_start_sector part2_end_sector=$part2_end_sector"
+
+ if [ -e $PART2 ]; then
+ echo "delete $PART2"
+ rm -f $PART2
+ fi
+
+ echo ""
+ echo "Create partitions on $DISK by $PARTTOOL in GPT style ..."
+
+ vtdebug "format disk by parted ..."
+
+ if [ "$TOOLDIR" != "aarch64" ]; then
+ vt_set_efi_type="set 2 msftdata on"
+ fi
+
+ parted -a none --script $DISK \
+ mklabel gpt \
+ unit s \
+ mkpart Ventoy ntfs $part1_start_sector $part1_end_sector \
+ mkpart VTOYEFI fat16 $part2_start_sector $part2_end_sector \
+ $vt_set_efi_type \
+ set 2 hidden on \
+ quit
+
+ sync
+
+ vtoygpt -f $DISK
+ sync
+
+ udevadm trigger --name-match=$DISK >/dev/null 2>&1
+ partprobe >/dev/null 2>&1
+ sleep 3
+ echo "Done"
+
+ echo 'mkfs on disk partitions ...'
+ for i in 1 2 3 4 5 6 7; do
+ if [ -b $PART2 ]; then
+ break
+ else
+ echo "wait $PART2 ..."
+ sleep 1
+ fi
+ done
+
+