From 14be12f01e6a9c9aa2f418939db2a5fb2f6b29e6 Mon Sep 17 00:00:00 2001 From: Nikolay Martyanov Date: Wed, 18 Sep 2024 16:35:38 +0200 Subject: [PATCH] pillar: Separate OVMF firmware files and standardize naming. Switch to using separate OVMF_CODE.fd and OVMF_VARS.fd files for FML and ARM modes instead of a combined .bin file. This ensures that settings are stored correctly and maintains consistent naming conventions. These changes do not affect containers or Xen. Signed-off-by: Nikolay Martyanov --- pkg/pillar/Dockerfile | 2 +- pkg/pillar/cmd/zedmanager/handledomainmgr.go | 2 +- pkg/pillar/hypervisor/kvm.go | 2 +- pkg/pillar/hypervisor/kvm_test.go | 16 ++++++++-------- pkg/pillar/types/locationconsts.go | 2 +- pkg/xen-tools/Dockerfile | 3 ++- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pkg/pillar/Dockerfile b/pkg/pillar/Dockerfile index 07e1636c6e5..17243cef9cd 100644 --- a/pkg/pillar/Dockerfile +++ b/pkg/pillar/Dockerfile @@ -143,7 +143,7 @@ RUN set -e && for patch in /sys-patches/*.patch; do \ done RUN mkdir -p /out/usr/lib/xen/boot -COPY --from=uefi-build /OVMF_VARS.fd /out/usr/lib/xen/boot/ovmf_vars.bin +COPY --from=uefi-build /OVMF_VARS.fd /out/usr/lib/xen/boot/OVMF_VARS.fd COPY --from=zfs /out /out COPY --from=fscrypt /opt/zededa/bin /out/opt/zededa/bin diff --git a/pkg/pillar/cmd/zedmanager/handledomainmgr.go b/pkg/pillar/cmd/zedmanager/handledomainmgr.go index bd065607263..49065135143 100644 --- a/pkg/pillar/cmd/zedmanager/handledomainmgr.go +++ b/pkg/pillar/cmd/zedmanager/handledomainmgr.go @@ -122,7 +122,7 @@ func MaybeAddDomainConfig(ctx *zedmanagerContext, } } if dc.BootLoader == "" && (dc.VirtualizationModeOrDefault() == types.FML || runtime.GOARCH == "arm64") { - dc.BootLoader = "/usr/lib/xen/boot/ovmf.bin" + dc.BootLoader = "/usr/lib/xen/boot/OVMF_CODE.fd" } if ns != nil { adapterCount := len(ns.AppNetAdapterList) diff --git a/pkg/pillar/hypervisor/kvm.go b/pkg/pillar/hypervisor/kvm.go index 14e60a25805..f7ae260dc5f 100644 --- a/pkg/pillar/hypervisor/kvm.go +++ b/pkg/pillar/hypervisor/kvm.go @@ -728,7 +728,7 @@ func vmmOverhead(domainName string, domainUUID uuid.UUID, domainRAMSize int64, v } func getOVMFSettingsFile(domainName string) string { - return types.OVMFSettingsDir + "/" + domainName + "_ovmf_vars.bin" + return types.OVMFSettingsDir + "/" + domainName + "_OVMF_VARS.fd" } func prepareOVMFSettings(domainName string) (string, error) { // Create the OVMF settings directory if it does not exist diff --git a/pkg/pillar/hypervisor/kvm_test.go b/pkg/pillar/hypervisor/kvm_test.go index bff297efb08..e3bcc9a3a40 100644 --- a/pkg/pillar/hypervisor/kvm_test.go +++ b/pkg/pillar/hypervisor/kvm_test.go @@ -363,7 +363,7 @@ func TestCreateDomConfigOnlyCom1(t *testing.T) { }) config.VirtualizationMode = types.FML - config.BootLoader = "/usr/lib/xen/boot/ovmf.bin" + config.BootLoader = "/usr/lib/xen/boot/OVMF_CODE.fd" config.BootLoaderSettingsFile = "/persist/ovmf/0000000000000000.0.0_OVMF_VARS.fd" t.Run("amd64-fml", func(t *testing.T) { conf.Seek(0, 0) @@ -421,7 +421,7 @@ func TestCreateDomConfigOnlyCom1(t *testing.T) { format = "raw" readonly = "on" unit = "0" - file = "/usr/lib/xen/boot/ovmf.bin" + file = "/usr/lib/xen/boot/OVMF_CODE.fd" [drive "drive-ovmf-vars"] if = "pflash" @@ -649,7 +649,7 @@ func TestCreateDomConfigOnlyCom1(t *testing.T) { }) config.VirtualizationMode = types.HVM - config.BootLoader = "/usr/lib/xen/boot/ovmf.bin" + config.BootLoader = "/usr/lib/xen/boot/OVMF_CODE.fd" t.Run("arm64", func(t *testing.T) { conf.Seek(0, 0) if err := kvmArm.CreateDomConfig("test", config, types.DomainStatus{}, @@ -673,7 +673,7 @@ func TestCreateDomConfigOnlyCom1(t *testing.T) { dump-guest-core = "off" accel = "kvm:tcg" gic-version = "host" - firmware = "/usr/lib/xen/boot/ovmf.bin" + firmware = "/usr/lib/xen/boot/OVMF_CODE.fd" kernel = "/boot/kernel" initrd = "/boot/ramdisk" append = "init=/bin/sh" @@ -967,7 +967,7 @@ func TestCreateDomConfigAmd64Fml(t *testing.T) { diskConfigs, diskStatuses := qemuDisks() config, aa := domainConfigAndAssignableAdapters(diskConfigs) config.VirtualizationMode = types.FML - config.BootLoader = "/usr/lib/xen/boot/ovmf.bin" + config.BootLoader = "/usr/lib/xen/boot/OVMF_CODE.fd" config.BootLoaderSettingsFile = "/persist/ovmf/0000000000000000.0.0_OVMF_VARS.fd" addNonExistingAdapter(&config, &aa) if err := kvmIntel.CreateDomConfig("test", config, types.DomainStatus{}, @@ -1001,7 +1001,7 @@ func TestCreateDomConfigArm64(t *testing.T) { diskConfigs, diskStatuses := qemuDisks() config, aa := domainConfigAndAssignableAdapters(diskConfigs) config.VirtualizationMode = types.HVM - config.BootLoader = "/usr/lib/xen/boot/ovmf.bin" + config.BootLoader = "/usr/lib/xen/boot/OVMF_CODE.fd" if err := kvmArm.CreateDomConfig("test", config, types.DomainStatus{}, diskStatuses, &aa, nil, swtpmCtrlSock, conf); err != nil { t.Errorf("CreateDomConfig failed %v", err) @@ -1146,7 +1146,7 @@ func domConfigArm64() string { dump-guest-core = "off" accel = "kvm:tcg" gic-version = "host" - firmware = "/usr/lib/xen/boot/ovmf.bin" + firmware = "/usr/lib/xen/boot/OVMF_CODE.fd" kernel = "/boot/kernel" initrd = "/boot/ramdisk" append = "init=/bin/sh" @@ -1443,7 +1443,7 @@ func domConfigAmd64FML() string { format = "raw" readonly = "on" unit = "0" - file = "/usr/lib/xen/boot/ovmf.bin" + file = "/usr/lib/xen/boot/OVMF_CODE.fd" [drive "drive-ovmf-vars"] if = "pflash" diff --git a/pkg/pillar/types/locationconsts.go b/pkg/pillar/types/locationconsts.go index d9db5fb08d7..6ed48c6032c 100644 --- a/pkg/pillar/types/locationconsts.go +++ b/pkg/pillar/types/locationconsts.go @@ -136,7 +136,7 @@ const ( // OVMFSettingsDir - directory for OVMF settings, they are stored in per-domain files OVMFSettingsDir = PersistDir + "/ovmf" // OVMFSettingsTemplate - template file for OVMF settings - OVMFSettingsTemplate = "/usr/lib/xen/boot/ovmf_vars.bin" + OVMFSettingsTemplate = "/usr/lib/xen/boot/OVMF_VARS.fd" ) var ( diff --git a/pkg/xen-tools/Dockerfile b/pkg/xen-tools/Dockerfile index e9f0284509c..af5ed7876af 100644 --- a/pkg/xen-tools/Dockerfile +++ b/pkg/xen-tools/Dockerfile @@ -106,7 +106,8 @@ RUN if [ "$(uname -m)" = "x86_64" ]; then rm -f qemu-system-i386 && ln -s "qemu- COPY --from=uefi-build / /uefi/ RUN mkdir -p /out/usr/lib/xen/boot && cp /uefi/OVMF.fd /out/usr/lib/xen/boot/ovmf.bin && \ - cp /uefi/OVMF_PVH.fd /out/usr/lib/xen/boot/ovmf-pvh.bin + cp /uefi/OVMF_PVH.fd /out/usr/lib/xen/boot/ovmf-pvh.bin && \ + cp /uefi/OVMF_CODE.fd /out/usr/lib/xen/boot/OVMF_CODE.fd RUN if [ "$(uname -m)" = "x86_64" ]; then cp /uefi/*.rom /out/usr/lib/xen/boot/;fi FROM scratch