From a4266dcf284dc1bf5e21d49838d91b55983a5a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Sun, 7 Jan 2024 21:37:35 -0500 Subject: [PATCH] incusd/instance/qemu: Don't hardcode UEFI firmware in checkFeatures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #373 Signed-off-by: Stéphane Graber --- internal/server/instance/drivers/driver_qemu.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/internal/server/instance/drivers/driver_qemu.go b/internal/server/instance/drivers/driver_qemu.go index 242364a8ca1..4a86344cd6a 100644 --- a/internal/server/instance/drivers/driver_qemu.go +++ b/internal/server/instance/drivers/driver_qemu.go @@ -8306,7 +8306,20 @@ func (d *qemu) checkFeatures(hostArch int, qemuPath string) (map[string]any, err } if d.architectureSupportsUEFI(hostArch) { - qemuArgs = append(qemuArgs, "-drive", fmt.Sprintf("if=pflash,format=raw,readonly=on,file=%s", filepath.Join(d.ovmfPath(), "OVMF_CODE.fd"))) + // Try to locate a UEFI firmware. + var ovmfPath string + for _, entry := range ovmfGenericFirmwares { + if util.PathExists(filepath.Join(d.ovmfPath(), entry.code)) { + ovmfPath = filepath.Join(d.ovmfPath(), entry.code) + break + } + } + + if ovmfPath == "" { + return nil, fmt.Errorf("Unable to locate a UEFI firmware") + } + + qemuArgs = append(qemuArgs, "-drive", fmt.Sprintf("if=pflash,format=raw,readonly=on,file=%s", ovmfPath)) } var stderr bytes.Buffer