On 1/29/26 10:40 AM, Fiona Ebner wrote:
Am 28.01.26 um 1:30 PM schrieb Dominik Csapak:
diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index d8b212bc..de1ee0ba 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -63,6 +63,17 @@ Ext.define('PVE.Utils', {
Other: [{ desc: '-', val: 'other' }],
},
+ kvmOSTypesPerArchitecture: {
+ x86_64: {
+ bases: undefined, // include all
+ ostypes: undefined, // include all
+ },
+ aarch64: {
+ bases: ['Linux', 'Other'],
+ ostypes: ['l26', 'other'],
What about Windows? Do we really want to hide that compeletely in the
UI? Unfortunately [;P], I expect that to be a non-negligible use case
and many requests to come in (which will miss that it's available on the
CLI). Or is it not properly supported in the backend? If yes, that
should be fixed, note that I have sent a patch at least for the
unavailable hyperv flags [0]. I mean, we can also wait and see if I'm
right. Maybe people don't care about it as much on ARM, I'd be glad ;)
[0]:
https://lore.proxmox.com/pve-devel/[email protected]/
yeah, sorry should have expanded on the why here a bit:
yes, there are a few things in the backend still missing for windows arm
support, namely:
* display: the only device i could get windows to show anything was 'ramfb'
* iso/storage: since aarch64 does not support ide (at least in my tests
i couldn't get it to work, maybe there is a way), we have to use a
different bus for the iso/cdrom drives. virtio-scsi works theoretically,
but the windows installer stops at some point because the drivers are
missing. OVMF can't boot from other scsi controllers or sata.
so the only other way would be to implement usb-storage support, but
that's not here yet
so all in all i opted to hide windows for the moment because one cannot
make it work with the current options anyway
+ },
+ },
+
is_windows: function (ostype) {
for (let entry of PVE.Utils.kvm_ostypes['Microsoft Windows']) {
if (entry.val === ostype) {
@@ -2068,6 +2079,18 @@ Ext.define('PVE.Utils', {
return Ext.htmlEncode(description);
},
+ // returns the resulting architecture from a given arch and
+ // the nodename, in case the architecture is set to default
+ getArchitecture: function (architecture, nodename) {
getNodeArchitecture would be a bit more telling
+ if (architecture === '__default__') {
+ architecture = undefined;
+ }
+
+ let hostArchitecture =
PVE.data.ResourceStore.getNodeById(nodename)?.data.architecture;
+
+ return architecture ?? hostArchitecture ?? 'x86_64';
+ },
+
// returns if the given architecture is the native host architecture
of the given nodename
isHostArchitecture: function (architecture, nodename) {
if (architecture === '__default__') {