From: Daan De Meyer Date: Thu, 21 Sep 2023 09:25:56 +0000 (+0200) Subject: Pass split initrd as -initrd if it exists with directory image X-Git-Tag: v18~48^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1913%2Fhead;p=thirdparty%2Fmkosi.git Pass split initrd as -initrd if it exists with directory image 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. --- diff --git a/mkosi/qemu.py b/mkosi/qemu.py index 1d04684b7..1982f7b1f 100644 --- a/mkosi/qemu.py +++ b/mkosi/qemu.py @@ -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"]