livemedia-creator: RHEL9 only supports qemu-kvm
Return an error if --arch is passed, and drop the mapping to qemu-system-<arch> from installer.py and replace it with /usr/libexec/qemu-kvm Resolves: rhbz#1955674
This commit is contained in:
parent
04dccefa5b
commit
b240c9bf1a
@ -103,13 +103,12 @@ Includes the full html documentation for lorax, livemedia-creator, and the pylor
|
|||||||
%package lmc-virt
|
%package lmc-virt
|
||||||
Summary: livemedia-creator libvirt dependencies
|
Summary: livemedia-creator libvirt dependencies
|
||||||
Requires: lorax = %{version}-%{release}
|
Requires: lorax = %{version}-%{release}
|
||||||
Requires: qemu
|
Requires: qemu-kvm
|
||||||
|
|
||||||
# Fedora edk2 builds currently only support these arches
|
# Fedora edk2 builds currently only support these arches
|
||||||
%ifarch %{ix86} x86_64 %{arm} aarch64
|
%ifarch %{ix86} x86_64 %{arm} aarch64
|
||||||
Requires: edk2-ovmf
|
Requires: edk2-ovmf
|
||||||
%endif
|
%endif
|
||||||
Recommends: qemu-kvm
|
|
||||||
|
|
||||||
%description lmc-virt
|
%description lmc-virt
|
||||||
Additional dependencies required by livemedia-creator when using it with qemu.
|
Additional dependencies required by livemedia-creator when using it with qemu.
|
||||||
|
@ -48,7 +48,7 @@ from pylorax.sysutils import joinpaths, remove
|
|||||||
|
|
||||||
|
|
||||||
# Default parameters for rebuilding initramfs, override with --dracut-arg or --dracut-conf
|
# Default parameters for rebuilding initramfs, override with --dracut-arg or --dracut-conf
|
||||||
DRACUT_DEFAULT = ["--xz", "--add", "livenet dmsquash-live dmsquash-live-ntfs convertfs pollcdrom qemu qemu-net",
|
DRACUT_DEFAULT = ["--xz", "--add", "livenet dmsquash-live convertfs pollcdrom qemu qemu-net",
|
||||||
"--omit", "plymouth", "--no-hostonly", "--debug", "--no-early-microcode"]
|
"--omit", "plymouth", "--no-hostonly", "--debug", "--no-early-microcode"]
|
||||||
|
|
||||||
RUNTIME = "images/install.img"
|
RUNTIME = "images/install.img"
|
||||||
|
@ -135,14 +135,6 @@ class QEMUInstall(object):
|
|||||||
"""
|
"""
|
||||||
Run qemu using an iso and a kickstart
|
Run qemu using an iso and a kickstart
|
||||||
"""
|
"""
|
||||||
# Mapping of arch to qemu command
|
|
||||||
QEMU_CMDS = {"x86_64": "qemu-system-x86_64",
|
|
||||||
"i386": "qemu-system-i386",
|
|
||||||
"arm": "qemu-system-arm",
|
|
||||||
"aarch64": "qemu-system-aarch64",
|
|
||||||
"ppc64le": "qemu-system-ppc64"
|
|
||||||
}
|
|
||||||
|
|
||||||
def __init__(self, opts, iso, ks_paths, disk_img, img_size=2048,
|
def __init__(self, opts, iso, ks_paths, disk_img, img_size=2048,
|
||||||
kernel_args=None, memory=1024, vcpus=None, vnc=None, arch=None,
|
kernel_args=None, memory=1024, vcpus=None, vnc=None, arch=None,
|
||||||
cancel_func=None, virtio_host="127.0.0.1", virtio_port=6080,
|
cancel_func=None, virtio_host="127.0.0.1", virtio_port=6080,
|
||||||
@ -160,7 +152,7 @@ class QEMUInstall(object):
|
|||||||
:param int memory: Amount of RAM to assign to the virt, in MiB
|
:param int memory: Amount of RAM to assign to the virt, in MiB
|
||||||
:param int vcpus: Number of virtual cpus
|
:param int vcpus: Number of virtual cpus
|
||||||
:param str vnc: Arguments to pass to qemu -display
|
:param str vnc: Arguments to pass to qemu -display
|
||||||
:param str arch: Optional architecture to use in the virt
|
:param str arch: Unsupported in RHEL9
|
||||||
:param cancel_func: Function that returns True if the installation fails
|
:param cancel_func: Function that returns True if the installation fails
|
||||||
:type cancel_func: function
|
:type cancel_func: function
|
||||||
:param str virtio_host: Hostname to connect virtio log to
|
:param str virtio_host: Hostname to connect virtio log to
|
||||||
@ -169,9 +161,10 @@ class QEMUInstall(object):
|
|||||||
:param bool boot_uefi: Use OVMF to boot the VM in UEFI mode
|
:param bool boot_uefi: Use OVMF to boot the VM in UEFI mode
|
||||||
:param str ovmf_path: Path to the OVMF firmware
|
:param str ovmf_path: Path to the OVMF firmware
|
||||||
"""
|
"""
|
||||||
# Lookup qemu-system- for arch if passed, or try to guess using host arch
|
# RHEL9 only supports 1 path for the qemu-kvm binary
|
||||||
qemu_cmd = [self.QEMU_CMDS.get(arch or os.uname().machine, "qemu-system-"+os.uname().machine)]
|
qemu_cmd = ["/usr/libexec/qemu-kvm", "-cpu", "host"]
|
||||||
if not os.path.exists("/usr/bin/"+qemu_cmd[0]):
|
|
||||||
|
if not os.path.exists(qemu_cmd[0]):
|
||||||
raise InstallError("%s does not exist, cannot run qemu" % qemu_cmd[0])
|
raise InstallError("%s does not exist, cannot run qemu" % qemu_cmd[0])
|
||||||
|
|
||||||
qemu_cmd += ["-no-user-config"]
|
qemu_cmd += ["-no-user-config"]
|
||||||
@ -228,6 +221,9 @@ class QEMUInstall(object):
|
|||||||
log.info("qemu %s", display_args)
|
log.info("qemu %s", display_args)
|
||||||
qemu_cmd += ["-nographic", "-monitor", "none", "-serial", "null", "-display", display_args ]
|
qemu_cmd += ["-nographic", "-monitor", "none", "-serial", "null", "-display", display_args ]
|
||||||
|
|
||||||
|
# Setup virtio networking
|
||||||
|
qemu_cmd += ["-netdev", "user,id=n1", "-device", "virtio-net-pci,netdev=n1"]
|
||||||
|
|
||||||
# Setup the virtio log port
|
# Setup the virtio log port
|
||||||
qemu_cmd += ["-device", "virtio-serial-pci,id=virtio-serial0"]
|
qemu_cmd += ["-device", "virtio-serial-pci,id=virtio-serial0"]
|
||||||
qemu_cmd += ["-device", "virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0"
|
qemu_cmd += ["-device", "virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0"
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
import logging
|
import logging
|
||||||
log = logging.getLogger("livemedia-creator")
|
log = logging.getLogger("livemedia-creator")
|
||||||
|
|
||||||
import glob
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
@ -84,8 +83,8 @@ def main():
|
|||||||
errors.append("the volume id cannot be longer than 32 characters")
|
errors.append("the volume id cannot be longer than 32 characters")
|
||||||
|
|
||||||
if is_install and not opts.no_virt \
|
if is_install and not opts.no_virt \
|
||||||
and not any(glob.glob("/usr/bin/qemu-system-*")):
|
and not os.path.exists("/usr/libexec/qemu-kvm"):
|
||||||
errors.append("qemu needs to be installed.")
|
errors.append("qemu-kvm needs to be installed.")
|
||||||
|
|
||||||
if is_install and opts.no_virt \
|
if is_install and opts.no_virt \
|
||||||
and not os.path.exists("/usr/sbin/anaconda"):
|
and not os.path.exists("/usr/sbin/anaconda"):
|
||||||
@ -145,6 +144,9 @@ def main():
|
|||||||
if not os.path.exists(joinpaths(opts.ovmf_path, f)):
|
if not os.path.exists(joinpaths(opts.ovmf_path, f)):
|
||||||
errors.append("OVMF secure boot firmware file %s is missing from %s" % (f, opts.ovmf_path))
|
errors.append("OVMF secure boot firmware file %s is missing from %s" % (f, opts.ovmf_path))
|
||||||
|
|
||||||
|
if opts.arch != None:
|
||||||
|
errors.append("RHEL9 only support virt for the host arch.")
|
||||||
|
|
||||||
if os.getuid() != 0:
|
if os.getuid() != 0:
|
||||||
errors.append("You need to run this as root")
|
errors.append("You need to run this as root")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user