Am 28.01.26 um 1:29 PM schrieb Dominik Csapak:
> This enables us to have different default for different architectures,
> e.g. using 'ovmf' for 'aarch64' for everything.
>
> The external interface should be compatible, so there is nothing
> to do for current callers.
>
> Signed-off-by: Dominik Csapak <[email protected]>
> ---
> www/manager6/qemu/OSDefaults.js | 74 ++++++++++++++++++++++++++-------
> 1 file changed, 58 insertions(+), 16 deletions(-)
>
> diff --git a/www/manager6/qemu/OSDefaults.js b/www/manager6/qemu/OSDefaults.js
> index bcebd0b3..3a707d60 100644
> --- a/www/manager6/qemu/OSDefaults.js
> +++ b/www/manager6/qemu/OSDefaults.js
> @@ -24,8 +24,17 @@ Ext.define('PVE.qemu.OSDefaults', {
>
> let addOS = function (settings) {
> if (Object.hasOwn(settings, 'parent')) {
> - let child = Ext.clone(me[settings.parent]);
> - me[settings.pveOS] = Ext.apply(child, settings);
> + let architectures = settings.architectures;
> + delete settings.architectures;
> +
> + let child = {
> + x86_64: Ext.apply({}, settings,
> me[settings.parent].x86_64),
> + };
> +
> + for (const arch of Object.keys(architectures ?? {})) {
> + child[arch] = Ext.apply({}, architectures[arch],
> me[settings.parent][arch]);
> + }
> + me[settings.pveOS] = child;
> } else {
> throw 'Could not find your genitor';
> }
---snip 8<---
> @@ -58,6 +83,17 @@ Ext.define('PVE.qemu.OSDefaults', {
> ide: 1,
> },
> networkCard: 'virtio',
> +
> + architectures: {
Nit: I'd prefer something like architectureSpecific, what do you think?
> + aarch64: {
> + busPriority: {
> + scsi: 3,
> + virtio: 2,
> + sata: 1,
> + },
> + networkCard: 'virtio',
> + },
> + },
> });
>
> // recommendation from http://wiki.qemu.org/Windows2000
> @@ -73,12 +109,18 @@ Ext.define('PVE.qemu.OSDefaults', {
> parent: 'w2k',
> });
>
> - me.getDefaults = function (ostype) {
> - if (PVE.qemu.OSDefaults[ostype]) {
> - return PVE.qemu.OSDefaults[ostype];
> - } else {
> - return PVE.qemu.OSDefaults.generic;
> + me.getDefaults = function (ostype, arch = 'x86_64') {
> + if (!PVE.qemu.OSDefaults[ostype]) {
> + ostype = 'generic';
> }
> +
> + let os = PVE.qemu.OSDefaults[ostype];
> + if (os[arch]) {
> + return os[arch];
> + }
> +
> + // default
> + return os.x86_64;
> };
> },
> });