git: f46269aba8a0 - main - vmimage.subr: Support partition alignment

From: Colin Percival <cperciva_at_FreeBSD.org>
Date: Wed, 21 Oct 2026 20:48:37 UTC
The branch main has been updated by cperciva:

URL: https://cgit.FreeBSD.org/src/commit/?id=f46269aba8a0bc2b60a0305bdafd8dfb42e0bb88

commit f46269aba8a0bc2b60a0305bdafd8dfb42e0bb88
Author:     Colin Percival <cperciva@FreeBSD.org>
AuthorDate: 2026-10-08 00:52:01 +0000
Commit:     Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2026-10-21 20:40:37 +0000

    vmimage.subr: Support partition alignment
    
    If VM_PARTALIGN is set, pass %${VM_PARTALIGN} to mkimg in the
    specification of swap, config, root, and ESP partitions.  (Boot
    partitions are not aligned, both because they're small and in
    case firmware makes assumptions about their locations.)
    
    Reviewed by:    lwhsu, imp
    MFC after:      1 week
    Sponsored by:   Amazon
    Differential Revision:  https://reviews.freebsd.org/D60454
---
 release/tools/vmimage.subr | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr
index b8d2be965dde..e7e7b9607b15 100644
--- a/release/tools/vmimage.subr
+++ b/release/tools/vmimage.subr
@@ -369,10 +369,14 @@ umount_loop() {
 }
 
 vm_create_disk() {
-	local BOOTFILES BOOTPARTSOFFSET FSPARTTYPE X86GPTBOOTFILE
+	local BOOTFILES BOOTPARTSOFFSET FSPARTTYPE PARTALIGN X86GPTBOOTFILE
+
+	if [ -n "${VM_PARTALIGN}" ]; then
+		PARTALIGN="%${VM_PARTALIGN}"
+	fi
 
 	if [ -z "${NOSWAP}" ]; then
-		SWAPOPT="-p freebsd-swap/swapfs::${SWAPSIZE}"
+		SWAPOPT="-p freebsd-swap/swapfs::${SWAPSIZE}${PARTALIGN}"
 	fi
 
 	if [ -n "${VM_BOOTPARTSOFFSET}" ]; then
@@ -380,7 +384,7 @@ vm_create_disk() {
 	fi
 
 	if [ -n "${CONFIG_DRIVE}" ]; then
-		CONFIG_DRIVE="-p freebsd/config-drive::${CONFIG_DRIVE_SIZE}"
+		CONFIG_DRIVE="-p freebsd/config-drive::${CONFIG_DRIVE_SIZE}${PARTALIGN}"
 	fi
 
 	case "${VMFS}" in
@@ -412,19 +416,19 @@ vm_create_disk() {
 			ESP=yes
 			BOOTPARTS="-b ${BOOTFILES}/i386/pmbr/pmbr \
 				   -p freebsd-boot/bootfs:=${BOOTFILES}/${X86GPTBOOTFILE}${BOOTPARTSOFFSET}"
-			ROOTFSPART="-p ${FSPARTTYPE}/rootfs:=${VMBASE}"
+			ROOTFSPART="-p ${FSPARTTYPE}/rootfs:=${VMBASE}${PARTALIGN}"
 			MAKEFSARGS="$MAKEFSARGS -B little"
 			;;
 		arm:armv7 | arm64:aarch64 | riscv:riscv64*)
 			ESP=yes
 			BOOTPARTS=
-			ROOTFSPART="-p ${FSPARTTYPE}/rootfs:=${VMBASE}"
+			ROOTFSPART="-p ${FSPARTTYPE}/rootfs:=${VMBASE}${PARTALIGN}"
 			MAKEFSARGS="$MAKEFSARGS -B little"
 			;;
 		powerpc:powerpc*)
 			ESP=no
 			BOOTPARTS="-p prepboot:=${BOOTFILES}/powerpc/boot1.chrp/boot1.elf -a 1"
-			ROOTFSPART="-p freebsd:=${VMBASE}"
+			ROOTFSPART="-p freebsd:=${VMBASE}${PARTALIGN}"
 			if [ ${TARGET_ARCH} = powerpc64le ]; then
 				MAKEFSARGS="$MAKEFSARGS -B little"
 			else
@@ -445,7 +449,7 @@ vm_create_disk() {
 		if [ -z "${BOOTPARTS}" ]; then
 			espsuffix="${BOOTPARTSOFFSET}"
 		fi
-		BOOTPARTS="${BOOTPARTS} -p efi/efiboot0:=${espfilename}${espsuffix}"
+		BOOTPARTS="${BOOTPARTS} -p efi/efiboot0:=${espfilename}${espsuffix}${PARTALIGN}"
 
 		# Add this to fstab
 		mkdir -p ${DESTDIR}/boot/efi