]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Make kernel image lookup logic more robust 2166/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 12 Dec 2023 14:39:54 +0000 (15:39 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 12 Dec 2023 16:39:37 +0000 (17:39 +0100)
mkosi/__init__.py

index a5c02695e4ff6b5c62774839c75bfaf9f1f320b3..f4a1015e56ada6253dc4ed120cc0bbc8e0e04ffe 100644 (file)
@@ -53,7 +53,7 @@ from mkosi.manifest import Manifest
 from mkosi.mounts import mount, mount_overlay, mount_passwd, mount_usr
 from mkosi.pager import page
 from mkosi.partition import Partition, finalize_root, finalize_roothash
-from mkosi.qemu import QemuDeviceNode, copy_ephemeral, run_qemu, run_ssh
+from mkosi.qemu import KernelType, QemuDeviceNode, copy_ephemeral, run_qemu, run_ssh
 from mkosi.run import (
     become_root,
     bwrap,
@@ -1268,10 +1268,14 @@ def gen_kernel_images(state: MkosiState) -> Iterator[tuple[str, Path]]:
         key=lambda k: GenericVersion(k.name),
         reverse=True
     ):
-        if not (kver / "vmlinuz").exists():
-            continue
-
-        yield kver.name, Path("usr/lib/modules") / kver.name / "vmlinuz"
+        # Make sure we look for anything that remotely resembles vmlinuz, as
+        # the arch specific install scripts in the kernel source tree sometimes
+        # do weird stuff. But let's make sure we're not returning UKIs as the
+        # UKI on Fedora is named vmlinuz-virt.efi.
+        for kimg in kver.glob("vmlinuz*"):
+            if KernelType.identify(kimg) != KernelType.uki:
+                yield kver.name, kimg
+                break
 
 
 def build_initrd(state: MkosiState) -> Path: