initrd: Consume signed fwupd capsules - #2191
Conversation
Allow boards to consume firmware staged by fwupd on a FAT ESP. Validate the EFI capsule before passing its ROM to a board-selected writer. Authenticate an exact manifest and payload with an isolated vendor keyring. Bind each package to its board and capsule GUID, enforce bounded sizes, and require a newer generation to prevent rollback. Quarantine rejected requests and mark accepted requests as applying before invoking the writer. Remove a request only after a successful write, then reboot according to board policy. Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Add a TPM2 QEMU board for exercising the fwupd capsule handoff with a disposable public key and a file-backed mock writer. Give the VM a stable SMBIOS identity that the companion fwupd proof of concept can match. Confirmation and reboot are bypassed only for this non-flashing fixture; physical boards remain disabled. Signed-off-by: Sean Rhodes <sean@starlabs.systems>
|
CC @pietrushnic @macpijan (feel free to ping proper internal resource for review) |
|
Interesting idea to make In this form it won't be shared with UEFI firmware and LVFS can distribute non-capsule firmware just the same, so I would be interested to know how this approach was selected. Or are you planning to reuse the same format for EDK2 as well? |
|
Well, 100% untested, so we'll see how it pans out but theory was:
|
Draft / RFC
Add a board-gated path for consuming firmware staged by fwupd in
EFI/UpdateCapsule. The consumer validates the EFI capsule, exact package contents, board and capsule GUID, generation, ROM size and hash, and a detached signature from an isolated vendor keyring before calling a board-selected writer.Rejected requests are quarantined. Accepted requests are renamed to
.applyingbefore the writer runs and removed only after a successful write.Add an independent TPM2 QEMU fixture with a disposable public key, mock file-backed writer, and stable SMBIOS identity. Physical boards remain disabled.
Runtime validation
WIP follow-up
This is based directly on current
linuxboot/headsmaster and has no dependency on the Star Labs board series.Production enablement still requires per-board capsule GUIDs, embedded production public keys, monotonic generation policy, physical flash writers, a persistent completion/failure result contract, and protected-flash hardware validation.
Companion fwupd Draft PR: fwupd/fwupd#10910.