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
|
||||
Summary: livemedia-creator libvirt dependencies
|
||||
Requires: lorax = %{version}-%{release}
|
||||
Requires: qemu
|
||||
Requires: qemu-kvm
|
||||
|
||||
# Fedora edk2 builds currently only support these arches
|
||||
%ifarch %{ix86} x86_64 %{arm} aarch64
|
||||
Requires: edk2-ovmf
|
||||
%endif
|
||||
Recommends: qemu-kvm
|
||||
|
||||
%description lmc-virt
|
||||
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
|
||||
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"]
|
||||
|
||||
RUNTIME = "images/install.img"
|
||||
|
@ -135,14 +135,6 @@ class QEMUInstall(object):
|
||||
"""
|
||||
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,
|
||||
kernel_args=None, memory=1024, vcpus=None, vnc=None, arch=None,
|
||||
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 vcpus: Number of virtual cpus
|
||||
: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
|
||||
:type cancel_func: function
|
||||
: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 str ovmf_path: Path to the OVMF firmware
|
||||
"""
|
||||
# Lookup qemu-system- for arch if passed, or try to guess using host arch
|
||||
qemu_cmd = [self.QEMU_CMDS.get(arch or os.uname().machine, "qemu-system-"+os.uname().machine)]
|
||||
if not os.path.exists("/usr/bin/"+qemu_cmd[0]):
|
||||
# RHEL9 only supports 1 path for the qemu-kvm binary
|
||||
qemu_cmd = ["/usr/libexec/qemu-kvm", "-cpu", "host"]
|
||||
|
||||
if not os.path.exists(qemu_cmd[0]):
|
||||
raise InstallError("%s does not exist, cannot run qemu" % qemu_cmd[0])
|
||||
|
||||
qemu_cmd += ["-no-user-config"]
|
||||
@ -228,6 +221,9 @@ class QEMUInstall(object):
|
||||
log.info("qemu %s", 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
|
||||
qemu_cmd += ["-device", "virtio-serial-pci,id=virtio-serial0"]
|
||||
qemu_cmd += ["-device", "virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0"
|
||||
|
@ -20,7 +20,6 @@
|
||||
import logging
|
||||
log = logging.getLogger("livemedia-creator")
|
||||
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
@ -84,8 +83,8 @@ def main():
|
||||
errors.append("the volume id cannot be longer than 32 characters")
|
||||
|
||||
if is_install and not opts.no_virt \
|
||||
and not any(glob.glob("/usr/bin/qemu-system-*")):
|
||||
errors.append("qemu needs to be installed.")
|
||||
and not os.path.exists("/usr/libexec/qemu-kvm"):
|
||||
errors.append("qemu-kvm needs to be installed.")
|
||||
|
||||
if is_install and opts.no_virt \
|
||||
and not os.path.exists("/usr/sbin/anaconda"):
|
||||
@ -145,6 +144,9 @@ def main():
|
||||
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))
|
||||
|
||||
if opts.arch != None:
|
||||
errors.append("RHEL9 only support virt for the host arch.")
|
||||
|
||||
if os.getuid() != 0:
|
||||
errors.append("You need to run this as root")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user