]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Pass split initrd as -initrd if it exists with directory image 1913/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 21 Sep 2023 09:25:56 +0000 (11:25 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 21 Sep 2023 11:21:44 +0000 (13:21 +0200)
When we're booting a directory image, direct boot only works if the
kernel has the virtiofs driver builtin. Since this is not the case
for distribution kernels, let's make sure we pass the initrd to qemu
as well if one exists so that booting straight into a virtiofs can
also work with distro kernels provided an initrd is available.

mkosi/qemu.py

index 1d04684b79f36fcccea608ed61747d1105e77867..1982f7b1fa4d092b1028efac7187ef368c994de7 100644 (file)
@@ -450,12 +450,14 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, uid: int, gid: int) -> None:
 
         if config.output_format == OutputFormat.cpio:
             cmdline += ["-initrd", fname]
-        elif config.output_format == OutputFormat.uki and firmware == QemuFirmware.linux:
+        elif (
+            firmware == QemuFirmware.linux and
+            config.output_format in (OutputFormat.uki, OutputFormat.directory, OutputFormat.disk) and
+            (config.output_dir / config.output_split_initrd).exists()
+        ):
             cmdline += ["-initrd", config.output_dir / config.output_split_initrd]
-        elif config.output_format == OutputFormat.disk:
-            if firmware == QemuFirmware.linux:
-                cmdline += ["-initrd", config.output_dir / config.output_split_initrd]
 
+        if config.output_format == OutputFormat.disk:
             cmdline += ["-drive", f"if=none,id=mkosi,file={fname},format=raw",
                         "-device", "virtio-scsi-pci,id=scsi",
                         "-device", f"scsi-{'cd' if config.qemu_cdrom else 'hd'},drive=mkosi,bootindex=1"]