public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fiona Ebner <f.ebner@proxmox.com>
To: Christian Ludwig <christian_ludwig@genua.de>,
	"pve-devel@lists.proxmox.com" <pve-devel@lists.proxmox.com>
Subject: Re: Design for custom UEFI firmware in PVE
Date: Thu, 23 Apr 2026 18:24:27 +0200	[thread overview]
Message-ID: <f0cec18a-6932-4840-bb01-e72068903695@proxmox.com> (raw)
In-Reply-To: <10513e3f2c0d94bc938a540b4a0a18749eb5ed96.camel@genua.de>

Hi Christian,

Am 17.04.26 um 6:38 PM schrieb Christian Ludwig:
> there are certain situations when a VM template might bundle its own
> UEFI firmware [1], [2]. TL;DR: Some virtual security appliances like
> SonicWall or Genuscreen, bring their own OVMF implementation.
> Especially in a confidential computing environment, the goal is to not
> trust the hypervisor. It makes perfect sense to not use the firmware
> shipped with Proxmox in that scenario.
> 
> At Genua we plan to bring support for custom UEFI firmware to Proxmox.
> We are new to Proxmox VE development, so bear with us. I want to share
> our design, before we start the effort to implement it.

Thank you for working on this!

> The current UEFI firmware implementation in PVE has two firmware files.
> A host provided code image that ships with each Proxmox release and is
> the same for every VM. And a per-VM writable data store. We plan to
> implement a way to upload and use a custom code image per VM.
> 
> Our design introduces a new 'firmware' content type for directory-based
> storage volumes. The admin can then upload UEFI firmware files there.
> This might even be useful for other types of firmware in the future.
> The firmware file can then be connected to a VM using the VM's QEMU
> config setting, but only if the VM was configured to boot in UEFI mode
> before. If set, the image overrides the -bios QEMU command line option
> for confidential VMs. These do not have a UEFI data store. For
> conventional VMs the option overrides the -pflash0 command line option.

I think the new 'firmware' content type can be fine, but maybe it should
even be 'efi-firmware'. In particular, with the 'images' content type,
we regret overloading it (for VMs and CTs) and there is an unapplied
series [0] that would make the content type <-> volume type mapping 1:1.

Let's clarify the exact usage/workflow of the firmware images:

1. Is it upload and assign the firmware image only to a single VM
(read-write or read-only) and remove it when the VM is gone? So a strict
1:1 mapping, each firmware image ever belongs to a single VM.

2. Is it upload and copy the firmware image for each VM before first use
(read-write or read-only)? So a loose 1:1 mapping. While the original
firmware image is 1:n, its copies are strictly 1:1.

3. Is it upload and use by multiple VMs (I assume read-only, since
read-write is probably too outlandish here)? So a proper 1:n mapping
between firmware image and VMs.

Case 1 would behave similar to 'images', but with upload support.
Case 2 would behave similar to 'import'+'images'.
Case 3 would behave similar to 'iso'.

To be clear, this is not a suggestion to use those content types, just
to give some orientation with what we already have. I think in all three
cases we can have 'efi-firmware' as a new content type.

> This does not change anything for efidisk0.

What exactly do you mean here? That the schema/behavior for efidisk0
still is the same? I suppose you'll also warn if an EFI disk is attached
to a confidential VM like currently happens?

> Storage handling for firmware files and VM configuration shall be
> accessible from the API as a first step. We are not very concerned
> about the web interface. Does that approach make sense to you? Is it ok
> to go with a new content type or are there better alternatives?
> 
> 
>   - Christian
> 
> [1] https://bugzilla.proxmox.com/show_bug.cgi?id=5898
> [2] https://bugzilla.proxmox.com/show_bug.cgi?id=7258

[0]:
https://lore.proxmox.com/pve-devel/20250729111557.136012-1-w.bumiller@proxmox.com/

Best Regards,
Fiona




      reply	other threads:[~2026-04-23 16:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-17 16:33 Christian Ludwig
2026-04-23 16:24 ` Fiona Ebner [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f0cec18a-6932-4840-bb01-e72068903695@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=christian_ludwig@genua.de \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal