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