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: Wed, 6 May 2026 10:07:19 +0200	[thread overview]
Message-ID: <e9646f16-51bb-43c6-b8b5-8e7e54b2a3aa@proxmox.com> (raw)
In-Reply-To: <276d5e90703d23f8d242094ed652b2264d89f69d.camel@genua.de>

Am 28.04.26 um 2:12 PM schrieb Christian Ludwig:
> On Thu, 2026-04-23 at 18:24 +0200, Fiona Ebner wrote:
>> 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.
> 
> Thanks for raising this. We will keep it in mind.
> 
>> 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'.
> 
> EFI firmware files behave like case 3, its a 1:n mapping. Custom EFI
> firmware files are read-only. They contain the code section only. EFI-
> data is handled via efidisk0, if needed.

Okay, I see. So there can be a new 'efi-firmware' content/volume type
with upload support in the storage layer and the possibility to set such
volumes in the relevant (yet-to-be-introduced) config option of a VM.

>> 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.
> 
> Agreed.
> 
>>> 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?
> 
> Yes, we do not plan to change any behavior related to efidisk0. Custom
> EFI firmware files contain the code section only and confidential VMs
> only have an EFI firmware with code. Normal VMs that bring their own
> firmware, like in the SonicWall case, also need an efidisk0 attached
> for data. Our goal is to make that work. But none of that treats
> efidisk0 any different from the current situation.
> 
> Hope that makes things a bit more clear.

Yes, thank you for the clarification!

I don't see any initial blockers with this design :)

Best Regards,
Fiona

>>> 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-05-06  8:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-17 16:33 Design for custom UEFI firmware in PVE Christian Ludwig
2026-04-23 16:24 ` Fiona Ebner
2026-04-28 12:14   ` Christian Ludwig
2026-05-06  8:07     ` 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=e9646f16-51bb-43c6-b8b5-8e7e54b2a3aa@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