From f46269aba8a0bc2b60a0305bdafd8dfb42e0bb88 Mon Sep 17 00:00:00 2001 From: Colin Percival Date: Wed, 7 Oct 2026 17:52:01 -0700 Subject: [PATCH] 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