From 16b0bd545cb9e4bc3eb4e9138200fd5a993a43ff Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Wed, 24 Feb 2021 22:18:04 +0000 Subject: [PATCH] - bsc#1178926 - Unable to find any master var for loader /usr/share/qemu/{bios.bin, bios-256k.bin} virtman-legacy-bios-support.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=541 --- virt-manager.changes | 7 ++ virt-manager.spec | 2 + virtinst-keep-iso-for-xenpv.patch | 4 + virtinst-smbios-unsupported-for-xenpv.patch | 2 +- virtman-legacy-bios-support.patch | 88 +++++++++++++++++++++ 5 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 virtman-legacy-bios-support.patch diff --git a/virt-manager.changes b/virt-manager.changes index 43731f38..a064c766 100644 --- a/virt-manager.changes +++ b/virt-manager.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Feb 24 14:10:01 MST 2021 - acho@suse.com + +- bsc#1178926 - Unable to find any master var for loader + /usr/share/qemu/{bios.bin, bios-256k.bin} + virtman-legacy-bios-support.patch + ------------------------------------------------------------------- Mon Jan 25 14:32:10 MST 2021 - carnold@suse.com diff --git a/virt-manager.spec b/virt-manager.spec index 24cc792a..0570ea82 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -67,6 +67,7 @@ Patch157: virtman-fix-restore-vm-menu-selection.patch Patch158: virtman-disallow-adding-floppy-disk.patch Patch159: virtman-register-delete-event-for-details-dialog.patch Patch160: virtman-show-no-firmware-for-xenpv.patch +Patch161: virtman-legacy-bios-support.patch Patch170: virtinst-xen-drive-type.patch Patch171: virtinst-xenbus-disk-index-fix.patch Patch172: virtinst-refresh_before_fetch_pool.patch @@ -198,6 +199,7 @@ machine). %patch158 -p1 %patch159 -p1 %patch160 -p1 +%patch161 -p1 %patch170 -p1 %patch171 -p1 %patch172 -p1 diff --git a/virtinst-keep-iso-for-xenpv.patch b/virtinst-keep-iso-for-xenpv.patch index 19f68edd..c4e50800 100644 --- a/virtinst-keep-iso-for-xenpv.patch +++ b/virtinst-keep-iso-for-xenpv.patch @@ -1,3 +1,7 @@ +References: bsc#1180897 +Removing the cdrom iso file from the device prevents booting +with a qemu error. + Index: virt-manager-3.2.0/virtinst/install/installer.py =================================================================== --- virt-manager-3.2.0.orig/virtinst/install/installer.py diff --git a/virtinst-smbios-unsupported-for-xenpv.patch b/virtinst-smbios-unsupported-for-xenpv.patch index 7c8ffe03..8f8dd800 100644 --- a/virtinst-smbios-unsupported-for-xenpv.patch +++ b/virtinst-smbios-unsupported-for-xenpv.patch @@ -4,7 +4,7 @@ Index: virt-manager-3.2.0/virtinst/guest.py =================================================================== --- virt-manager-3.2.0.orig/virtinst/guest.py +++ virt-manager-3.2.0/virtinst/guest.py -@@ -691,6 +691,8 @@ class Guest(XMLBuilder): +@@ -704,6 +704,8 @@ class Guest(XMLBuilder): self.type != "kvm"): log.warning( # pragma: no cover "KVM acceleration not available, using '%s'", self.type) diff --git a/virtman-legacy-bios-support.patch b/virtman-legacy-bios-support.patch new file mode 100644 index 00000000..b864e455 --- /dev/null +++ b/virtman-legacy-bios-support.patch @@ -0,0 +1,88 @@ +References: bsc#1178926 + +When we choose /usr/share/qemu/bios.bin or /usr/share/qemu/bios-256k.bin +in Customize configuration before install, show this error message: + +Unable to complete install: 'operation failed: unable to find any master var store for loader: /usr/share/qemu/bios.bin' + +Traceback (most recent call last): + File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in cb_wrapper + callback(asyncjob, *args, **kwargs) + File "/usr/share/virt-manager/virtManager/createvm.py", line 2081, in _do_async_install + installer.start_install(guest, meter=meter) + File "/usr/share/virt-manager/virtinst/install/installer.py", line 721, in start_install + domain = self._create_guest( + File "/usr/share/virt-manager/virtinst/install/installer.py", line 669, in _create_guest + domain = self.conn.createXML(install_xml or final_xml, 0) + File "/usr/lib64/python3.8/site-packages/libvirt.py", line 4347, in createXML + raise libvirtError('virDomainCreateXML() failed') +libvirt.libvirtError: operation failed: unable to find any master var store for loader: /usr/share/qemu/bios.bin + +This patch check the loader if it is include bios.bin and bios-256k.bin. + +Signed-off-by: Yu-Chen, Cho +-- +v2: +Fixed tabs vs spaces issues. + +v1: +Check the loader if it is include bios.bin and bios-256k.bin. +--- + virtManager/object/domain.py | 18 +++++++++--------- + virtinst/guest.py | 13 +++++++++++++ + 2 files changed, 22 insertions(+), 9 deletions(-) + +Index: virt-manager-3.2.0/virtManager/object/domain.py +=================================================================== +--- virt-manager-3.2.0.orig/virtManager/object/domain.py ++++ virt-manager-3.2.0/virtManager/object/domain.py +@@ -671,16 +671,16 @@ class vmmDomain(vmmLibvirtObject): + + if loader != _SENTINEL: + if loader is None: +- # Implies seabios, aka the default, so clear everything +- guest.os.loader = None +- guest.os.loader_ro = None +- guest.os.loader_type = None +- guest.os.nvram = None +- guest.os.nvram_template = None ++ # Implies the default, so clear everything ++ guest.set_legacy_path(None) + else: +- # Implies UEFI +- guest.set_uefi_path(loader) +- guest.disable_hyperv_for_uefi() ++ if "bios.bin" in loader or "bios-256k.bin" in loader: ++ # Implies Custom: seabios, not UEFI ++ guest.set_legacy_path(loader) ++ else: ++ # Implies UEFI ++ guest.set_uefi_path(loader) ++ guest.disable_hyperv_for_uefi() + + if nvram != _SENTINEL: + guest.os.nvram = nvram +Index: virt-manager-3.2.0/virtinst/guest.py +=================================================================== +--- virt-manager-3.2.0.orig/virtinst/guest.py ++++ virt-manager-3.2.0/virtinst/guest.py +@@ -569,6 +569,19 @@ class Guest(XMLBuilder): + self.os.machine) + self.os.machine = "q35" + ++ def set_legacy_path(self, path): ++ """ ++ Configure legacy BIOS for QEMU. ++ """ ++ self.os.loader = path ++ if (path): ++ self.os.loader_ro = True ++ else: ++ self.os.loader_ro = None ++ self.os.loader_type = None ++ self.os.nvram = None ++ self.os.nvram_template = None ++ + def disable_hyperv_for_uefi(self): + # UEFI doesn't work with hyperv bits for some OS + if not self.is_uefi():