From c45e06f2b543b87c93639a0c2c02eab320e97e9c Mon Sep 17 00:00:00 2001 From: Antony Messerli Date: Sun, 9 Aug 2026 23:53:02 -0500 Subject: [PATCH] Gate Proxmox menu by architecture, add arm64 Proxmox VE Proxmox VE gained official arm64 support on 2026-08-04. The new proxmox-ve-arm64 endpoint carries arch: arm64, so key off the endpoint's arch (defaulting to amd64) when building menu items and resolving the kernel URL. Backup Server, Mail Gateway and Datacenter Manager remain x86-64 only and are now hidden on arm64 instead of being offered and failing to boot. Drops the x86-only vga=791/vesafb parameters on arm64, matching the arm64 ISO's own grub.cfg, and folds the four identical boot blocks into one. Refs #1404 Co-Authored-By: Claude Opus 5 (1M context) --- .../netbootxyz/templates/menu/proxmox.ipxe.j2 | 78 +++++++++---------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/roles/netbootxyz/templates/menu/proxmox.ipxe.j2 b/roles/netbootxyz/templates/menu/proxmox.ipxe.j2 index 6a767497..5097ae24 100644 --- a/roles/netbootxyz/templates/menu/proxmox.ipxe.j2 +++ b/roles/netbootxyz/templates/menu/proxmox.ipxe.j2 @@ -9,31 +9,36 @@ goto ${menu} || clear proxmox_choice clear proxmox_version set os Proxmox -menu ${os} +set os_arch ${arch} +iseq ${os_arch} x86_64 && set os_arch amd64 || +clear vga_params +iseq ${os_arch} amd64 && set vga_params vga=791 video=vesafb:ywrap,mtrr || +menu ${os} - ${os_arch} {% for key, value in endpoints.items() | sort %} +{% set endpoint_arch = value.arch | default('amd64') %} {% if value.os == "proxmox-backup-server" %} -item --gap ${os} Backup Server -item pbs-normal ${space} ${os} Backup Server {{ value.version }} -item pbs-text ${space} ${os} Backup Server {{ value.version }} (Text) -item pbs-debug ${space} ${os} Backup Server {{ value.version }} (Debug) +iseq ${os_arch} {{ endpoint_arch }} && item --gap ${os} Backup Server || +iseq ${os_arch} {{ endpoint_arch }} && item pbs-normal ${space} ${os} Backup Server {{ value.version }} || +iseq ${os_arch} {{ endpoint_arch }} && item pbs-text ${space} ${os} Backup Server {{ value.version }} (Text) || +iseq ${os_arch} {{ endpoint_arch }} && item pbs-debug ${space} ${os} Backup Server {{ value.version }} (Debug) || {% endif %} {% if value.os == "proxmox-mailgateway" %} -item --gap ${os} Mail Gateway -item pmg-normal ${space} ${os} Mail Gateway {{ value.version }} -item pmg-text ${space} ${os} Mail Gateway {{ value.version }} (Text) -item pmg-debug ${space} ${os} Mail Gateway {{ value.version }} (Debug) +iseq ${os_arch} {{ endpoint_arch }} && item --gap ${os} Mail Gateway || +iseq ${os_arch} {{ endpoint_arch }} && item pmg-normal ${space} ${os} Mail Gateway {{ value.version }} || +iseq ${os_arch} {{ endpoint_arch }} && item pmg-text ${space} ${os} Mail Gateway {{ value.version }} (Text) || +iseq ${os_arch} {{ endpoint_arch }} && item pmg-debug ${space} ${os} Mail Gateway {{ value.version }} (Debug) || {% endif %} {% if value.os == "proxmox-datacenter-manager" %} -item --gap ${os} Datacenter Manager -item pdm-normal ${space} ${os} Datacenter Manager {{ value.version }} -item pdm-text ${space} ${os} Datacenter Manager {{ value.version }} (Text) -item pdm-debug ${space} ${os} Datacenter Manager {{ value.version }} (Debug) +iseq ${os_arch} {{ endpoint_arch }} && item --gap ${os} Datacenter Manager || +iseq ${os_arch} {{ endpoint_arch }} && item pdm-normal ${space} ${os} Datacenter Manager {{ value.version }} || +iseq ${os_arch} {{ endpoint_arch }} && item pdm-text ${space} ${os} Datacenter Manager {{ value.version }} (Text) || +iseq ${os_arch} {{ endpoint_arch }} && item pdm-debug ${space} ${os} Datacenter Manager {{ value.version }} (Debug) || {% endif %} {% if value.os == "proxmox-ve" %} -item --gap ${os} VE -item pve-normal ${space} ${os} VE {{ value.version }} -item pve-text ${space} ${os} VE {{ value.version }} (Text) -item pve-debug ${space} ${os} VE {{ value.version }} (Debug) +iseq ${os_arch} {{ endpoint_arch }} && item --gap ${os} VE || +iseq ${os_arch} {{ endpoint_arch }} && item pve-normal ${space} ${os} VE {{ value.version }} || +iseq ${os_arch} {{ endpoint_arch }} && item pve-text ${space} ${os} VE {{ value.version }} (Text) || +iseq ${os_arch} {{ endpoint_arch }} && item pve-debug ${space} ${os} VE {{ value.version }} (Debug) || {% endif %} {% endfor %} choose proxmox_choice || goto proxmox_exit @@ -90,51 +95,42 @@ goto boot-pbs :boot-pbs {% for key, value in endpoints.items() | sort %} {% if value.os == "proxmox-backup-server" %} -set kernel_url ${live_endpoint}{{ value.path }} -set proxmox_version {{ value.version }} +iseq ${os_arch} {{ value.arch | default('amd64') }} && set kernel_url ${live_endpoint}{{ value.path }} || +iseq ${os_arch} {{ value.arch | default('amd64') }} && set proxmox_version {{ value.version }} || {% endif %} {% endfor %} -imgfree -kernel ${kernel_url}vmlinuz vga=791 video=vesafb:ywrap,mtrr ramdisk_size=16777216 rw quiet ${params} {{ kernel_params }} -initrd ${kernel_url}initrd -initrd ${kernel_url}proxmox.iso /proxmox.iso -boot +goto boot-proxmox :boot-pmg {% for key, value in endpoints.items() | sort %} {% if value.os == "proxmox-mailgateway" %} -set kernel_url ${live_endpoint}{{ value.path }} -set proxmox_version {{ value.version }} +iseq ${os_arch} {{ value.arch | default('amd64') }} && set kernel_url ${live_endpoint}{{ value.path }} || +iseq ${os_arch} {{ value.arch | default('amd64') }} && set proxmox_version {{ value.version }} || {% endif %} {% endfor %} -imgfree -kernel ${kernel_url}vmlinuz vga=791 video=vesafb:ywrap,mtrr ramdisk_size=16777216 rw quiet ${params} {{ kernel_params }} -initrd ${kernel_url}initrd -initrd ${kernel_url}proxmox.iso /proxmox.iso -boot +goto boot-proxmox :boot-pdm {% for key, value in endpoints.items() | sort %} {% if value.os == "proxmox-datacenter-manager" %} -set kernel_url ${live_endpoint}{{ value.path }} -set proxmox_version {{ value.version }} +iseq ${os_arch} {{ value.arch | default('amd64') }} && set kernel_url ${live_endpoint}{{ value.path }} || +iseq ${os_arch} {{ value.arch | default('amd64') }} && set proxmox_version {{ value.version }} || {% endif %} {% endfor %} -imgfree -kernel ${kernel_url}vmlinuz vga=791 video=vesafb:ywrap,mtrr ramdisk_size=16777216 rw quiet ${params} {{ kernel_params }} -initrd ${kernel_url}initrd -initrd ${kernel_url}proxmox.iso /proxmox.iso -boot +goto boot-proxmox :boot-pve {% for key, value in endpoints.items() | sort %} {% if value.os == "proxmox-ve" %} -set kernel_url ${live_endpoint}{{ value.path }} -set proxmox_version {{ value.version }} +iseq ${os_arch} {{ value.arch | default('amd64') }} && set kernel_url ${live_endpoint}{{ value.path }} || +iseq ${os_arch} {{ value.arch | default('amd64') }} && set proxmox_version {{ value.version }} || {% endif %} {% endfor %} +goto boot-proxmox + +:boot-proxmox imgfree -kernel ${kernel_url}vmlinuz vga=791 video=vesafb:ywrap,mtrr ramdisk_size=16777216 rw quiet ${params} {{ kernel_params }} +kernel ${kernel_url}vmlinuz ${vga_params} ramdisk_size=16777216 rw quiet ${params} {{ kernel_params }} initrd ${kernel_url}initrd initrd ${kernel_url}proxmox.iso /proxmox.iso boot