From d8898cb773feac2469af6bc8a974566051a73954 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 15 Dec 2023 14:32:21 +0100 Subject: [PATCH] Support booting Fedora default image on s390x --- mkosi.conf.d/15-bootable.conf | 4 ++++ mkosi.conf.d/20-centos-fedora/mkosi.conf | 3 --- .../20-centos-fedora/mkosi.conf.d/20-uefi.conf | 11 +++++++++++ mkosi.conf.d/{20-fedora.conf => 20-fedora/mkosi.conf} | 1 - mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf | 9 +++++++++ mkosi/architecture.py | 3 +++ mkosi/qemu.py | 8 ++++++-- 7 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 mkosi.conf.d/20-centos-fedora/mkosi.conf.d/20-uefi.conf rename mkosi.conf.d/{20-fedora.conf => 20-fedora/mkosi.conf} (92%) create mode 100644 mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf diff --git a/mkosi.conf.d/15-bootable.conf b/mkosi.conf.d/15-bootable.conf index 09e24f947..5622c102b 100644 --- a/mkosi.conf.d/15-bootable.conf +++ b/mkosi.conf.d/15-bootable.conf @@ -4,5 +4,9 @@ Format=|disk Format=|directory +[Match] +Architecture=|x86-64 +Architecture=|arm64 + [Content] @Bootable=yes diff --git a/mkosi.conf.d/20-centos-fedora/mkosi.conf b/mkosi.conf.d/20-centos-fedora/mkosi.conf index 4ed6c3332..0c3e1cfe4 100644 --- a/mkosi.conf.d/20-centos-fedora/mkosi.conf +++ b/mkosi.conf.d/20-centos-fedora/mkosi.conf @@ -20,13 +20,11 @@ Packages= dnf dosfstools e2fsprogs - edk2-ovmf erofs-utils kernel-core mtools openssh-clients openssl - pesign python3-cryptography qemu-kvm-core shadow-utils @@ -36,7 +34,6 @@ Packages= strace swtpm systemd - systemd-boot systemd-container systemd-networkd systemd-resolved diff --git a/mkosi.conf.d/20-centos-fedora/mkosi.conf.d/20-uefi.conf b/mkosi.conf.d/20-centos-fedora/mkosi.conf.d/20-uefi.conf new file mode 100644 index 000000000..dbf7f58ab --- /dev/null +++ b/mkosi.conf.d/20-centos-fedora/mkosi.conf.d/20-uefi.conf @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +[Match] +Architecture=|x86-64 +Architecture=|arm64 + +[Content] +Packages= + systemd-boot + pesign + edk2-ovmf diff --git a/mkosi.conf.d/20-fedora.conf b/mkosi.conf.d/20-fedora/mkosi.conf similarity index 92% rename from mkosi.conf.d/20-fedora.conf rename to mkosi.conf.d/20-fedora/mkosi.conf index 918c2e0ed..54bce69d4 100644 --- a/mkosi.conf.d/20-fedora.conf +++ b/mkosi.conf.d/20-fedora/mkosi.conf @@ -13,6 +13,5 @@ Packages= dnf5 amd-ucode-firmware pacman - sbsigntools systemd-ukify zypper diff --git a/mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf b/mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf new file mode 100644 index 000000000..5d1e58f6b --- /dev/null +++ b/mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +[Match] +Architecture=|x86-64 +Architecture=|arm64 + +[Content] +Packages= + sbsigntools diff --git a/mkosi/architecture.py b/mkosi/architecture.py index 460be8617..d020aa4c8 100644 --- a/mkosi/architecture.py +++ b/mkosi/architecture.py @@ -128,6 +128,9 @@ class Architecture(StrEnum): def supports_smbios(self) -> bool: return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64) + def supports_fw_cfg(self) -> bool: + return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64) + def is_native(self) -> bool: return self == self.native() diff --git a/mkosi/qemu.py b/mkosi/qemu.py index ec7e0fc71..c859a7108 100644 --- a/mkosi/qemu.py +++ b/mkosi/qemu.py @@ -529,6 +529,8 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu if config.architecture == Architecture.arm64: machine = "type=virt" + elif config.architecture == Architecture.s390x: + machine = "type=s390-ccw-virtio" else: machine = f"type=q35,smm={'on' if ovmf_supports_sb else 'off'}" @@ -542,10 +544,12 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu "-m", config.qemu_mem, "-object", "rng-random,filename=/dev/urandom,id=rng0", "-device", "virtio-rng-pci,rng=rng0,id=rng-device0", - "-nic", "user,model=virtio-net-pci", *shm, ] + if config.architecture not in (Architecture.s390, Architecture.s390x): + cmdline += ["-nic", "user,model=virtio-net-pci"] + if config.qemu_kvm != ConfigFeature.disabled and have_kvm and config.architecture.is_native(): accel = "kvm" if qemu_version(config) >= QEMU_KVM_DEVICE_VERSION: @@ -609,7 +613,7 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu payload = base64.b64encode(v.encode()).decode() if config.architecture.supports_smbios() and firmware == QemuFirmware.uefi: cmdline += ["-smbios", f"type=11,value=io.systemd.credential.binary:{k}={payload}"] - else: + elif config.architecture.supports_fw_cfg(): f = stack.enter_context(tempfile.NamedTemporaryFile(prefix="mkosi-fw-cfg", mode="w")) f.write(v) f.flush() -- 2.47.2