This commit is contained in:
Peter Robinson 2022-02-05 13:53:27 +00:00
parent deb06a6770
commit 7a0a859bfe
21 changed files with 8 additions and 888 deletions

View File

@ -1,37 +0,0 @@
From bb7983845fcb7d8212e52b804ef13d1e565920e6 Mon Sep 17 00:00:00 2001
From: Jeremy Linton <jeremy.linton@arm.com>
Date: Fri, 11 Sep 2020 11:30:41 -0500
Subject: [PATCH 1/3] aarch64: for linux tty if acpi
If we are going to use ACPI with linux+edk2 we
need to force the console because aarch64 defaults
to serial (ttyAMA0) if a spcr is present.
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
---
oz/Guest.py | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 0536cfd..fb9b130 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -467,8 +467,14 @@ class Guest(object):
oz.ozutil.lxml_subelement(domain, "vcpu", str(self.install_cpus))
# features
features = oz.ozutil.lxml_subelement(domain, "features")
- if self.tdl.arch in ["aarch64", "x86_64"]:
+ if self.tdl.arch in ["x86_64"]:
+ oz.ozutil.lxml_subelement(features, "acpi")
+ if self.tdl.arch in ["aarch64"]:
oz.ozutil.lxml_subelement(features, "acpi")
+ # current edk2+linux on aarch64 puts a SPCR in place when serial is active
+ # this then becomes the default tty unlike on x86 where it will continue to
+ # use the uefi framebuffer/graphics console. Force linux to use both.
+ cmdline = str(cmdline) + " console=ttyAMA0 console=tty0"
if self.tdl.arch in ["x86_64"]:
oz.ozutil.lxml_subelement(features, "apic")
oz.ozutil.lxml_subelement(features, "pae")
--
2.26.2

View File

@ -1,31 +0,0 @@
From 64941d84d4c0f28526e77e3ae8b21b5d912cc31f Mon Sep 17 00:00:00 2001
From: Jeremy Linton <jeremy.linton@arm.com>
Date: Fri, 11 Sep 2020 11:32:26 -0500
Subject: [PATCH 2/3] aarch64: Less strict CPU checking for armv7 guests on
aarch64
Current versions of qemu/libvirt on f33 don't appear to allow armv7
guests to start with strict cpu checking on armv8/aarch64 host
OSs. Lossen up the host-passthrough checking.
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
---
oz/Guest.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index fb9b130..a360e01 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -483,7 +483,7 @@ class Guest(object):
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
# Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
- cpu = oz.ozutil.lxml_subelement(domain, "cpu", None, {'mode': 'custom', 'match': 'exact'})
+ cpu = oz.ozutil.lxml_subelement(domain, "cpu", None, {'mode': 'host-passthrough', 'check': 'none'})
oz.ozutil.lxml_subelement(cpu, "model", "host", {'fallback': 'allow'})
# os
osNode = oz.ozutil.lxml_subelement(domain, "os")
--
2.26.2

View File

@ -1,32 +0,0 @@
From c77ee4884d4ebcb2ae3c89557071d72c138bba74 Mon Sep 17 00:00:00 2001
From: Jeremy Linton <jeremy.linton@arm.com>
Date: Fri, 11 Sep 2020 11:26:42 -0500
Subject: [PATCH] fedora: default to F30 for versions > 30
Instead of constantly updating the fedora version match logic
we can start to use some range based selections so that it
only needs to be updated if something changes.
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
---
oz/Fedora.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/oz/Fedora.py b/oz/Fedora.py
index f02ac8b..d4d5405 100644
--- a/oz/Fedora.py
+++ b/oz/Fedora.py
@@ -249,7 +249,10 @@ class FedoraGuest(oz.RedHat.RedHatLinuxCDYumGuest):
def __init__(self, tdl, config, auto, nicmodel, haverepo, diskbus, # pylint: disable=unused-argument
brokenisomethod, output_disk=None, macaddress=None, # pylint: disable=unused-argument
assumed_update=None, useuefi=False):
- self.config = version_to_config[tdl.update]
+ if int(tdl.update) < 31:
+ self.config = version_to_config[tdl.update]
+ else:
+ self.config = version_to_config["30"]
if nicmodel is None:
nicmodel = self.config.default_netdev
if diskbus is None:
--
2.30.0

View File

@ -1,37 +0,0 @@
From fbce72eb95ab15f5c830c542333e9007f3126487 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:00:08 +0000
Subject: [PATCH 01/13] Clarify bugzilla instance for bug references
Substitute BZ -> RHBZ to clarify BZ locations.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 4f66c2f..034749d 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -465,7 +465,7 @@ class Guest(object):
oz.ozutil.lxml_subelement(features, "pae")
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
- # Possibly related to BZ 1171501 - need host passthrough for aarch64 and arm with kvm
+ # Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
cpu = oz.ozutil.lxml_subelement(domain, "cpu", None, {'mode': 'custom', 'match': 'exact'})
oz.ozutil.lxml_subelement(cpu, "model", "host", {'fallback': 'allow'})
# os
@@ -597,7 +597,7 @@ class Guest(object):
capacity = size
if backing_filename:
- # FIXME: Revisit as BZ 958510 evolves
+ # FIXME: Revisit as RHBZ 958510 evolves
# At the moment libvirt forces us to specify a size rather than
# assuming we want to inherit the size of our backing file.
# It may be possible to avoid this inspection step if libvirt
--
2.20.1

View File

@ -1,29 +0,0 @@
From 9e8592849675baa11a30774550a24b34d5611b1b Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 12:41:01 +0000
Subject: [PATCH 02/13] drop ARMv7 special handling for console port
It's unnecessary and breaks grpahical output. Qemu generates a DT with all
the appropriate bits in it to setup the console.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 034749d..e346904 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -481,8 +481,6 @@ class Guest(object):
if initrd:
oz.ozutil.lxml_subelement(osNode, "initrd", initrd)
if cmdline:
- if self.tdl.arch == "armv7l":
- cmdline += " console=ttyAMA0"
oz.ozutil.lxml_subelement(osNode, "cmdline", cmdline)
if self.tdl.arch == "aarch64":
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
--
2.20.1

View File

@ -1,37 +0,0 @@
From 0b32e08e5ddfd7088297d267aed71950219dad79 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 10:54:43 +0000
Subject: [PATCH 03/13] Add appropriate arch checks for architecture specific
features
In a lot of cases qemu just ignores incorrect cmd line options when run
against a different architecture but sometimes it causes issues so lets
add the appropriate checks to ensure no issues.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index e346904..e3a5da5 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -460,9 +460,11 @@ class Guest(object):
oz.ozutil.lxml_subelement(domain, "vcpu", str(self.install_cpus))
# features
features = oz.ozutil.lxml_subelement(domain, "features")
- oz.ozutil.lxml_subelement(features, "acpi")
- oz.ozutil.lxml_subelement(features, "apic")
- oz.ozutil.lxml_subelement(features, "pae")
+ if self.tdl.arch in ["aarch64", "x86_64"]:
+ oz.ozutil.lxml_subelement(features, "acpi")
+ if self.tdl.arch in ["x86_64"]:
+ oz.ozutil.lxml_subelement(features, "apic")
+ oz.ozutil.lxml_subelement(features, "pae")
# CPU
if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
# Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
--
2.20.1

View File

@ -1,46 +0,0 @@
From c197d163ccbd2997d400942e14442257dd9d2285 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 11:08:25 +0000
Subject: [PATCH 05/13] Fix input devices for ARMv7 and aarch64
The Arm architectures don't work well with the legacy ps2 bits causing
issues with graphical output. Qemu also doesn't, due to a historical
oversight, automatically setup input so we need to do it here else
graphical out and hence screenshots don't work.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 4e74fe1..418b888 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -255,7 +255,10 @@ class Guest(object):
self.clockoffset = "utc"
self.mousetype = mousetype
if self.mousetype is None:
- self.mousetype = "ps2"
+ if self.tdl.arch in ["aarch64", "armv7l"]:
+ self.mousetype = "usb"
+ else:
+ self.mousetype = "ps2"
if diskbus is None or diskbus == "ide":
self.disk_bus = "ide"
self.disk_dev = "hda"
@@ -512,6 +515,11 @@ class Guest(object):
elif self.mousetype == "usb":
mousedict['type'] = 'tablet'
oz.ozutil.lxml_subelement(devices, "input", None, mousedict)
+ if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
+ # Other arches add a keyboard by default, for historical reasons ARM doesn't
+ # so we add it here so graphical works and hence we can get debug screenshots RHBZ 1538637
+ oz.ozutil.lxml_subelement(devices, 'controller', None, {'type': 'usb', 'index': '0'})
+ oz.ozutil.lxml_subelement(devices, 'input', None, {'type': 'keyboard', 'bus': 'usb'})
# serial console pseudo TTY
console = oz.ozutil.lxml_subelement(devices, "serial", None, {'type': 'pty'})
oz.ozutil.lxml_subelement(console, "target", None, {'port': '0'})
--
2.20.1

View File

@ -1,33 +0,0 @@
From d4c4ea8c4ea77471fc72639d31c38d3d39bc0453 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:19:21 +0000
Subject: [PATCH 06/13] Setup graphical console on all architectures except
s390x
The graphical console is now supported on all architectures except
s390x so set it up to enable screenshot fucntionality across all
supported architectures.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 418b888..dfb63e4 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -500,8 +500,8 @@ class Guest(object):
# devices
devices = oz.ozutil.lxml_subelement(domain, "devices")
# graphics
- if self.tdl.arch not in ["aarch64", "armv7l", "s390x"]:
- # qemu for arm/aarch64/s390x does not support a graphical console - amazingly
+ if not self.tdl.arch in ["s390x"]:
+ # qemu for s390x does not support a graphical console
oz.ozutil.lxml_subelement(devices, "graphics", None, {'port': '-1', 'type': 'vnc'})
# network
interface = oz.ozutil.lxml_subelement(devices, "interface", None, {'type': 'bridge'})
--
2.20.1

View File

@ -1,35 +0,0 @@
From fb257ff2fbb66a732a1369445b8c580a4ec61339 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 27 Feb 2019 12:30:07 +0000
Subject: [PATCH 07/13] Default to using 2Gb on all architectures
The original 1Gb should be enough but RAM is cheap and sometimes things
like the initrd unexpectently bloat so 2Gb gives us room to move.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index dfb63e4..3bb144e 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -178,13 +178,8 @@ class Guest(object):
1)
# the memory in the configuration file is specified in megabytes, but
# libvirt expects kilobytes, so multiply by 1024
- if self.tdl.arch in ["ppc64", "ppc64le"]:
- # ppc64 needs at least 2Gb RAM
- self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
+ self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
'memory', 2048)) * 1024
- else:
- self.install_memory = int(oz.ozutil.config_get_key(config, 'libvirt',
- 'memory', 1024)) * 1024
self.image_type = oz.ozutil.config_get_key(config, 'libvirt',
'image_type', 'raw')
--
2.20.1

View File

@ -1,29 +0,0 @@
From e274f7bbcac0ef1ccc6ccd7e98fd645793c5a649 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:05:22 +0000
Subject: [PATCH 08/13] Add the latest location for EDK2 OVMF firmware location
The Tianocore EDK2 OVMF firmware can now often be found in the
/usr/share/edk2/ovmf location so add this as an extra option.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/ozutil.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/oz/ozutil.py b/oz/ozutil.py
index 273a028..989c9d4 100644
--- a/oz/ozutil.py
+++ b/oz/ozutil.py
@@ -1050,6 +1050,8 @@ def find_uefi_firmware(arch):
elif arch in ['x86_64']:
uefi_list = [UEFI('/usr/share/OVMF/OVMF_CODE.fd',
'/usr/share/OVMF/OVMF_VARS.fd'),
+ UEFI('/usr/share/edk2/ovmf/OVMF_CODE.fd',
+ '/usr/share/edk2/ovmf/OVMF_VARS.fd'),
UEFI('/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd',
'/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd')]
elif arch in ['aarch64']:
--
2.20.1

View File

@ -1,31 +0,0 @@
From c24fa91acae23bdce21595654db002521f49fef2 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 23 Jan 2019 03:12:50 +0000
Subject: [PATCH 09/13] Add check for TianoCore EDK2 firmware for ARMv7
There's now TianoCore EDK2 firmwares for ARMv7 so add a check to
see if they're available in preparation of building UEFI enabled
ARMv7 images.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/ozutil.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/oz/ozutil.py b/oz/ozutil.py
index 989c9d4..d6a4a28 100644
--- a/oz/ozutil.py
+++ b/oz/ozutil.py
@@ -1061,6 +1061,9 @@ def find_uefi_firmware(arch):
'/usr/share/edk2/aarch64/vars-template-pflash.raw'),
UEFI('/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw',
'/usr/share/edk2.git/aarch64/vars-template-pflash.raw')]
+ elif arch in ['armv7l']:
+ uefi_list = [UEFI('/usr/share/edk2/arm/QEMU_EFI-pflash.raw',
+ '/usr/share/edk2/arm/vars-template-pflash.raw')]
else:
raise Exception("Invalid arch for UEFI firmware")
--
2.20.1

View File

@ -1,29 +0,0 @@
From a23d97852bd5a6693920a4f9c823f606e244f783 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 12:46:38 +0000
Subject: [PATCH 10/13] Check for UEFI EDK2 firmware on ARMv7
Checks for EDK2 firmware on ARMv7 along side aarch64 as it now also
supports UEFI now if the firmware is available.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Guest.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 3bb144e..fc3ae6d 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -484,7 +484,7 @@ class Guest(object):
oz.ozutil.lxml_subelement(osNode, "initrd", initrd)
if cmdline:
oz.ozutil.lxml_subelement(osNode, "cmdline", cmdline)
- if self.tdl.arch == "aarch64":
+ if self.tdl.arch in ["aarch64", "armv7l"]:
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
--
2.20.1

View File

@ -1,180 +0,0 @@
From 00047d25ca9b4afbcc692f36617c38e82b375591 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:02:47 +0000
Subject: [PATCH 11/13] Make whether we use UEFI configurable on devices that
have legacy options
This allows us to specifiy whether a OS version supports/defaults to
UEFI or legacy BIOS on x86.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Fedora.py | 15 ++++++++++++---
oz/Guest.py | 15 ++++++++++-----
oz/Linux.py | 4 ++--
oz/RedHat.py | 12 ++++++------
4 files changed, 30 insertions(+), 16 deletions(-)
diff --git a/oz/Fedora.py b/oz/Fedora.py
--- a/oz/Fedora.py
+++ b/oz/Fedora.py
@@ -32,7 +32,7 @@ class FedoraConfiguration(object):
"""
def __init__(self, has_virtio_channel, use_yum, use_dev_cdrom_device,
createpart, directkernel, default_netdev, default_diskbus,
- brokenisomethod, haverepo):
+ brokenisomethod, haverepo, useuefi=False):
self._has_virtio_channel = has_virtio_channel
self._use_yum = use_yum
self._use_dev_cdrom_device = use_dev_cdrom_device
@@ -42,6 +42,7 @@ class FedoraConfiguration(object):
self._default_diskbus = default_diskbus
self._brokenisomethod = brokenisomethod
self._haverepo = haverepo
+ self._useuefi = useuefi
@property
def has_virtio_channel(self):
@@ -107,6 +108,13 @@ class FedoraConfiguration(object):
"""
return self._haverepo
+ @property
+ def useuefi(self):
+ """
+ Property method for whether to default to using UEFI as firmware or legacy method.
+ """
+ return self._useuefi
+
version_to_config = {
'29': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
@@ -235,7 +243,7 @@ class FedoraGuest(oz.RedHat.RedHatLinuxC
# ignored now; we leave it in place for backwards API compatibility.
def __init__(self, tdl, config, auto, nicmodel, haverepo, diskbus, # pylint: disable=unused-argument
brokenisomethod, output_disk=None, macaddress=None, # pylint: disable=unused-argument
- assumed_update=None):
+ assumed_update=None, useuefi=False):
self.config = version_to_config[tdl.update]
if nicmodel is None:
nicmodel = self.config.default_netdev
@@ -247,7 +255,8 @@ class FedoraGuest(oz.RedHat.RedHatLinuxC
oz.RedHat.RedHatLinuxCDYumGuest.__init__(self, tdl, config, auto,
output_disk, nicmodel, diskbus,
True, True, self.config.directkernel,
- macaddress, self.config.use_yum)
+ macaddress, self.config.use_yum,
+ self.config.useuefi)
if self.assumed_update is not None:
self.log.warning("==== WARN: TDL contains Fedora update %s, which is newer than Oz knows about; pretending this is Fedora %s, but this may fail ====", tdl.update, assumed_update)
diff --git a/oz/Guest.py b/oz/Guest.py
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -129,7 +129,7 @@ class Guest(object):
self._discover_libvirt_type()
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, iso_allowed, url_allowed, macaddress):
+ mousetype, diskbus, iso_allowed, url_allowed, macaddress, useuefi):
self.tdl = tdl
# for backwards compatibility
@@ -488,6 +488,11 @@ class Guest(object):
loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
+ # x86_64 has legacy requirements so we check for defaults as well as for edk2
+ if self.tdl.arch in ["x86_64"] and self.config.useuefi == True:
+ loader, nvram = oz.ozutil.find_uefi_firmware(self.tdl.arch)
+ oz.ozutil.lxml_subelement(osNode, "loader", loader, {'readonly': 'yes', 'type': 'pflash'})
+ oz.ozutil.lxml_subelement(osNode, "nvram", None, {'template': nvram})
# poweroff, reboot, crash
oz.ozutil.lxml_subelement(domain, "on_poweroff", "destroy")
oz.ozutil.lxml_subelement(domain, "on_reboot", "destroy")
@@ -1309,10 +1314,10 @@ class CDGuest(Guest):
self.seqnum = seqnum
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, iso_allowed, url_allowed, macaddress):
+ mousetype, diskbus, iso_allowed, url_allowed, macaddress, useuefi):
Guest.__init__(self, tdl, config, auto, output_disk, nicmodel,
clockoffset, mousetype, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
self.orig_iso = os.path.join(self.data_dir, "isos",
self.tdl.distro + self.tdl.update + self.tdl.arch + "-" + self.tdl.installtype + ".iso")
@@ -1777,9 +1782,9 @@ class FDGuest(Guest):
Class for guest installation via floppy disk.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, clockoffset,
- mousetype, diskbus, macaddress):
+ mousetype, diskbus, macaddress, useuefi):
Guest.__init__(self, tdl, config, auto, output_disk, nicmodel,
- clockoffset, mousetype, diskbus, False, True, macaddress)
+ clockoffset, mousetype, diskbus, False, True, macaddress, useuefi)
self.orig_floppy = os.path.join(self.data_dir, "floppies",
self.tdl.distro + self.tdl.update + self.tdl.arch + ".img")
self.modified_floppy_cache = os.path.join(self.data_dir, "floppies",
diff --git a/oz/Linux.py b/oz/Linux.py
--- a/oz/Linux.py
+++ b/oz/Linux.py
@@ -33,10 +33,10 @@ class LinuxCDGuest(oz.Guest.CDGuest):
Class for Linux installation.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, macaddress):
+ iso_allowed, url_allowed, macaddress, useuefi):
oz.Guest.CDGuest.__init__(self, tdl, config, auto, output_disk,
nicmodel, None, None, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
def _test_ssh_connection(self, guestaddr):
"""
diff --git a/oz/RedHat.py b/oz/RedHat.py
--- a/oz/RedHat.py
+++ b/oz/RedHat.py
@@ -40,10 +40,10 @@ class RedHatLinuxCDGuest(oz.Linux.LinuxC
Class for RedHat-based CD guests.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, initrdtype, macaddress):
+ iso_allowed, url_allowed, initrdtype, macaddress, useuefi):
oz.Linux.LinuxCDGuest.__init__(self, tdl, config, auto, output_disk,
nicmodel, diskbus, iso_allowed,
- url_allowed, macaddress)
+ url_allowed, macaddress, useuefi)
self.crond_was_active = False
self.sshd_was_active = False
self.sshd_config = """\
@@ -722,11 +722,11 @@ class RedHatLinuxCDYumGuest(RedHatLinuxC
Class for RedHat-based CD guests with yum support.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- iso_allowed, url_allowed, initrdtype, macaddress, use_yum):
+ iso_allowed, url_allowed, initrdtype, macaddress, use_yum, useuefi):
oz.RedHat.RedHatLinuxCDGuest.__init__(self, tdl, config, auto,
output_disk, nicmodel, diskbus,
iso_allowed, url_allowed,
- initrdtype, macaddress)
+ initrdtype, macaddress, useuefi)
self.use_yum = use_yum
@@ -845,9 +845,9 @@ class RedHatFDGuest(oz.Guest.FDGuest):
Class for RedHat-based floppy guests.
"""
def __init__(self, tdl, config, auto, output_disk, nicmodel, diskbus,
- macaddress):
+ macaddress, useuefi):
oz.Guest.FDGuest.__init__(self, tdl, config, auto, output_disk,
- nicmodel, None, None, diskbus, macaddress)
+ nicmodel, None, None, diskbus, macaddress, useuefi)
if self.tdl.arch != "i386":
raise oz.OzException.OzException("Invalid arch " + self.tdl.arch + "for " + self.tdl.distro + " guest")
--
2.20.1

View File

@ -1,43 +0,0 @@
From 4f5df1e7b1081c550f846e53197277a41dd9dc88 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:05:13 +0000
Subject: [PATCH 12/13] Add Fedora 29 support
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/auto/Fedora29.auto | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+)
create mode 100644 oz/auto/Fedora29.auto
diff --git a/oz/auto/Fedora29.auto b/oz/auto/Fedora29.auto
new file mode 100644
index 0000000..1dae86a
--- /dev/null
+++ b/oz/auto/Fedora29.auto
@@ -0,0 +1,23 @@
+install
+text
+keyboard us
+lang en_US.UTF-8
+skipx
+network --device ens3 --bootproto dhcp
+rootpw %ROOTPW%
+firewall --disabled
+authconfig --enableshadow --enablemd5
+selinux --enforcing
+timezone --utc America/New_York
+bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
+
+zerombr
+clearpart --all --initlabel
+autopart --type=lvm
+
+reboot
+
+%packages
+@core
+
+%end
--
2.20.1

View File

@ -1,62 +0,0 @@
From 5369c963106f2c8d53d36787b51e4d19f8057902 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 14 Mar 2019 13:07:37 +0000
Subject: [PATCH 13/13] Add Fedora 30 support
In this release, if specified, we default to UEFI support.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
oz/Fedora.py | 5 +++++
oz/auto/Fedora30.auto | 23 +++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 oz/auto/Fedora30.auto
diff --git a/oz/Fedora.py b/oz/Fedora.py
index 118fd84..34c4fe7 100644
--- a/oz/Fedora.py
+++ b/oz/Fedora.py
@@ -117,6 +117,11 @@ class FedoraConfiguration(object):
version_to_config = {
+ '30': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
+ use_dev_cdrom_device=True, createpart=False,
+ directkernel="cpio", default_netdev='virtio',
+ default_diskbus='virtio', brokenisomethod=False,
+ haverepo=True, useuefi=True),
'29': FedoraConfiguration(has_virtio_channel=True, use_yum=False,
use_dev_cdrom_device=True, createpart=False,
directkernel="cpio", default_netdev='virtio',
diff --git a/oz/auto/Fedora30.auto b/oz/auto/Fedora30.auto
new file mode 100644
index 0000000..1dae86a
--- /dev/null
+++ b/oz/auto/Fedora30.auto
@@ -0,0 +1,23 @@
+install
+text
+keyboard us
+lang en_US.UTF-8
+skipx
+network --device ens3 --bootproto dhcp
+rootpw %ROOTPW%
+firewall --disabled
+authconfig --enableshadow --enablemd5
+selinux --enforcing
+timezone --utc America/New_York
+bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
+
+zerombr
+clearpart --all --initlabel
+autopart --type=lvm
+
+reboot
+
+%packages
+@core
+
+%end
--
2.20.1

View File

@ -1,26 +0,0 @@
--- oz-0.17.0/oz/RedHat.py 2021-10-27 15:00:41.586691227 -0700
+++ oz-0.17.0/oz/RedHat.py.new 2021-10-27 15:00:47.793724028 -0700
@@ -79,6 +79,10 @@
self.tdl.distro + self.tdl.update + self.tdl.arch + "-ramdisk")
self.cmdline = "inst.method=" + self.url + " inst.ks=file:/ks.cfg"
+ # don't write the kickstart to the image, or else initial-setup
+ # will think a root password has been set:
+ # https://bugzilla.redhat.com/show_bug.cgi?id=2015490
+ self.cmdline += " inst.nosave=output_ks"
if self.tdl.kernel_param:
self.cmdline += " " + self.tdl.kernel_param
--- oz-0.17.0/oz/Fedora.py 2021-10-27 15:03:10.034475686 -0700
+++ oz-0.17.0/oz/Fedora.py.new 2021-10-27 15:00:03.652490777 -0700
@@ -293,6 +293,10 @@
# out the method completely
if not self.config.brokenisomethod:
initrdline += " inst.method=cdrom:/dev/cdrom"
+ # don't write the kickstart to the image, or else initial-setup
+ # will think a root password has been set:
+ # https://bugzilla.redhat.com/show_bug.cgi?id=2015490
+ initrdline += " inst.nosave=output_ks"
self._modify_isolinux(initrdline)
def generate_diskimage(self, size=10, force=False):

View File

@ -1,49 +0,0 @@
From a085ed3d25602f91e9fddab64de7ceb7a81257b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Thu, 2 Jul 2020 09:28:02 +0200
Subject: [PATCH] set input devices only on non-s390x systems
qemu/libvirt now actively rejects configuration with eg. ps2 mouse for a s390x system
---
oz/Guest.py | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 92bdc71..0536cfd 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -512,18 +512,19 @@ class Guest(object):
oz.ozutil.lxml_subelement(interface, "source", None, {'bridge': self.bridge_name})
oz.ozutil.lxml_subelement(interface, "mac", None, {'address': self.macaddr})
oz.ozutil.lxml_subelement(interface, "model", None, {'type': self.nicmodel})
- # input
- mousedict = {'bus': self.mousetype}
- if self.mousetype == "ps2":
- mousedict['type'] = 'mouse'
- elif self.mousetype == "usb":
- mousedict['type'] = 'tablet'
- oz.ozutil.lxml_subelement(devices, "input", None, mousedict)
- if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
- # Other arches add a keyboard by default, for historical reasons ARM doesn't
- # so we add it here so graphical works and hence we can get debug screenshots RHBZ 1538637
- oz.ozutil.lxml_subelement(devices, 'controller', None, {'type': 'usb', 'index': '0'})
- oz.ozutil.lxml_subelement(devices, 'input', None, {'type': 'keyboard', 'bus': 'usb'})
+ # input (for non-s390x only)
+ if not self.tdl.arch in ["s390x"]:
+ mousedict = {'bus': self.mousetype}
+ if self.mousetype == "ps2":
+ mousedict['type'] = 'mouse'
+ elif self.mousetype == "usb":
+ mousedict['type'] = 'tablet'
+ oz.ozutil.lxml_subelement(devices, "input", None, mousedict)
+ if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
+ # Other arches add a keyboard by default, for historical reasons ARM doesn't
+ # so we add it here so graphical works and hence we can get debug screenshots RHBZ 1538637
+ oz.ozutil.lxml_subelement(devices, 'controller', None, {'type': 'usb', 'index': '0'})
+ oz.ozutil.lxml_subelement(devices, 'input', None, {'type': 'keyboard', 'bus': 'usb'})
# serial console pseudo TTY
console = oz.ozutil.lxml_subelement(devices, "serial", None, {'type': 'pty'})
oz.ozutil.lxml_subelement(console, "target", None, {'port': '0'})
--
2.21.3

View File

@ -1,41 +0,0 @@
diff --color -Nur oz-0.17.0.orig/oz/Fedora.py oz-0.17.0/oz/Fedora.py
--- oz-0.17.0.orig/oz/Fedora.py 2021-02-09 10:13:48.015870550 -0800
+++ oz-0.17.0/oz/Fedora.py 2021-02-09 12:17:24.056301714 -0800
@@ -276,20 +276,20 @@
self._copy_kickstart(os.path.join(self.iso_contents, "ks.cfg"))
if self.config.use_dev_cdrom_device:
- initrdline = " append initrd=initrd.img ks=cdrom:/dev/cdrom:/ks.cfg"
+ initrdline = " append initrd=initrd.img inst.ks=cdrom:/dev/cdrom:/ks.cfg"
else:
- initrdline = " append initrd=initrd.img ks=cdrom:/ks.cfg"
+ initrdline = " append initrd=initrd.img inst.ks=cdrom:/ks.cfg"
if self.tdl.installtype == "url":
if self.config.haverepo:
- initrdline += " repo="
+ initrdline += " inst.repo="
else:
- initrdline += " method="
+ initrdline += " inst.method="
initrdline += self.url
else:
# if the installtype is iso, then due to a bug in anaconda we leave
# out the method completely
if not self.config.brokenisomethod:
- initrdline += " method=cdrom:/dev/cdrom"
+ initrdline += " inst.method=cdrom:/dev/cdrom"
self._modify_isolinux(initrdline)
def generate_diskimage(self, size=10, force=False):
diff --color -Nur oz-0.17.0.orig/oz/RedHat.py oz-0.17.0/oz/RedHat.py
--- oz-0.17.0.orig/oz/RedHat.py 2021-02-09 10:13:48.011870545 -0800
+++ oz-0.17.0/oz/RedHat.py 2021-02-09 12:17:36.910316424 -0800
@@ -78,7 +78,7 @@
self.initrdcache = os.path.join(self.data_dir, "kernels",
self.tdl.distro + self.tdl.update + self.tdl.arch + "-ramdisk")
- self.cmdline = "method=" + self.url + " ks=file:/ks.cfg"
+ self.cmdline = "inst.method=" + self.url + " inst.ks=file:/ks.cfg"
if self.tdl.kernel_param:
self.cmdline += " " + self.tdl.kernel_param

View File

@ -1,46 +0,0 @@
From f73d7cff45504deb36b502d073157576528a6eb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 15 Jan 2021 15:49:05 +0000
Subject: [PATCH] Guest: fix to always use host-passthrough CPU for all arches
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The use of host passthrough was restricted to just arm architectures,
which meant other arches got their built in default, which is almost
never what you want. eg x86 gets qemu64 which lacks so many features
that some guests will not function at all.
There is no need to care about live migration with Oz, so it should
unconditionally use host-passthrough for all architectures when KVM
is enabled.
Furthermore the way host-passthrough was requested was incorrect
and relying on an accident of the libvirt QEMU impl. It needs to
use mode=host-passthrough, not mode=custom + model=host. Libvirt
should block the latter from being used.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
oz/Guest.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/oz/Guest.py b/oz/Guest.py
index 92bdc71c..aac57bd8 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -470,10 +470,10 @@
oz.ozutil.lxml_subelement(features, "apic")
oz.ozutil.lxml_subelement(features, "pae")
# CPU
- if self.tdl.arch in ["aarch64", "armv7l"] and self.libvirt_type == "kvm":
- # Possibly related to RHBZ 1171501 - need host passthrough for aarch64 and arm with kvm
- cpu = oz.ozutil.lxml_subelement(domain, "cpu", None, {'mode': 'host-passthrough', 'check': 'none'})
- oz.ozutil.lxml_subelement(cpu, "model", "host", {'fallback': 'allow'})
+ if self.libvirt_type == "kvm":
+ # If using KVM, we always want the best CPU the host can offer
+ # as we don't need to worry about live migration portability
+ oz.ozutil.lxml_subelement(domain, "cpu", None, {'mode': 'host-passthrough'})
# os
osNode = oz.ozutil.lxml_subelement(domain, "os")
mods = None

41
oz.spec
View File

@ -1,41 +1,11 @@
Name: oz
Version: 0.17.0
Release: 21%{?dist}
Name: oz
Version: 0.18.0
Release: 1%{?dist}
Summary: Library and utilities for automated guest OS installs
License: LGPLv2
URL: http://github.com/clalancette/oz
URL: http://github.com/clalancette/oz
Source0: https://github.com/clalancette/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
# https://github.com/clalancette/oz/pull/269
Patch1: 01-clarify-bz-instance.patch
Patch2: 02-drop-armv7-special-console-handling.patch
Patch3: 03-add-appropriate-arch-checks.patch
Patch5: 05-arm-fix-input-devices.patch
Patch6: 06-setup-graphical-all-except-s390x.patch
Patch7: 07-use-2gb-ram.patch
Patch8: 08-add-latest-location-ovmf.patch
Patch9: 09-add-tianocore-check.patch
Patch10: 10-check-edk2-firmware-armv7.patch
Patch11: 11-make-uefi-configurable.patch
Patch12: 12-fix-f29-config.patch
Patch13: 13-add-f30-support.patch
# https://github.com/clalancette/oz/pull/282
# fix compatibility with new qemu/libvirt on s390x
Patch14: oz-0.17.0-s390-input.patch
Patch15: 0001-aarch64-for-linux-tty-if-acpi.patch
Patch16: 0002-aarch64-Less-strict-CPU-checking-for-armv7-guests-on.patch
Patch17: 0003-fedora-default-to-F30-for-versions-30.patch
# https://github.com/clalancette/oz/pull/283
Patch18: oz-guest-always-use-cpu-host-passthrough.patch
Patch19: oz-anaconda-fixes.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2015490
# we patch two possible paths here: we use the self.cmdline from
# RedHat.py when doing direct kernel boot (note that RedHat.py's
# generate_install_media() skips self._iso_generate_install_media()
# if direct kernel boot works); otherwise, we're booting from a
# modified ISO, and the other path we patch in Fedora.py is used
# when modifying it
Patch20: oz-0.17.0-nowriteks.patch
BuildArch: noarch
@ -114,6 +84,9 @@ fi
%{python3_sitelib}/%{name}-%{version}-py%{python3_version}.egg-info
%changelog
* Sat Feb 05 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 0.18.0-1
- Update to 0.18.0
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.17.0-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

View File

@ -1 +1 @@
SHA512 (oz-0.17.0.tar.gz) = cb7d43bef0e6ae6f962988afbda96532c16983ace2bb0d36082495664c61637f467faa3d8ecbef0938786b8150b5910063c05b5d844ff98729c251550a850409
SHA512 (oz-0.18.0.tar.gz) = debf78db53ca23dd7bb389926c3e16252d7ad8fcf3114a0b449862a3a5c54ba5c8236193d709eab35874e8bdb245c9b394f98a3d1d4ebbb810e9b328495a5f3a