]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Support booting Fedora default image on s390x 2183/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 15 Dec 2023 13:32:21 +0000 (14:32 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Sat, 16 Dec 2023 17:15:23 +0000 (18:15 +0100)
mkosi.conf.d/15-bootable.conf
mkosi.conf.d/20-centos-fedora/mkosi.conf
mkosi.conf.d/20-centos-fedora/mkosi.conf.d/20-uefi.conf [new file with mode: 0644]
mkosi.conf.d/20-fedora/mkosi.conf [moved from mkosi.conf.d/20-fedora.conf with 92% similarity]
mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf [new file with mode: 0644]
mkosi/architecture.py
mkosi/qemu.py

index 09e24f947065bac788c2d29e06e78930d3298cd4..5622c102b473ad0b6cc837810c6dc7fd015d9a55 100644 (file)
@@ -4,5 +4,9 @@
 Format=|disk
 Format=|directory
 
+[Match]
+Architecture=|x86-64
+Architecture=|arm64
+
 [Content]
 @Bootable=yes
index 4ed6c33321edd0589ab7864d238f0e348a17f76c..0c3e1cfe480cd72a009abfa7ebfe2d2910e0883c 100644 (file)
@@ -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 (file)
index 0000000..dbf7f58
--- /dev/null
@@ -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
similarity index 92%
rename from mkosi.conf.d/20-fedora.conf
rename to mkosi.conf.d/20-fedora/mkosi.conf
index 918c2e0ed0c54c95fac147b0b516c7e9bc36c947..54bce69d456b55c88c122a1501814e0a5ad31c6f 100644 (file)
@@ -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 (file)
index 0000000..5d1e58f
--- /dev/null
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[Match]
+Architecture=|x86-64
+Architecture=|arm64
+
+[Content]
+Packages=
+        sbsigntools
index 460be8617566c5b09a63e4915c240ff31ff1ec1a..d020aa4c8380fa12da986920819163ed78207fde 100644 (file)
@@ -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()
 
index ec7e0fc71575b65fde00ebb4d5b4db46a46019fc..c859a710839b0b01680088aa2cdb6491a877d41c 100644 (file)
@@ -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()