]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
mkosi: add option for adding extra qemu args
authorLennart Poettering <lennart@poettering.net>
Fri, 8 Apr 2022 14:40:41 +0000 (16:40 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 18 May 2022 16:16:16 +0000 (17:16 +0100)
Let's add an option for adding extra options to pass to all our qemu
invocations.

Example mkosi.default:

```
[Host]
QemuArgs=-fw_cfg name=opt/io.systemd.credentials/foo,string=bar
```

mkosi.md
mkosi/__init__.py
mkosi/backend.py
tests/test_config_parser.py

index 5e7669193ab237cba1ff48110028901e071b5ee6..89e47e22ccd72a2fe4df976dbed603ac6f3011f6 100644 (file)
--- a/mkosi.md
+++ b/mkosi.md
@@ -1117,6 +1117,11 @@ a machine ID.
   should use KVM acceleration. Defaults to yes if the host machine
   supports KVM acceleration, no otherwise.
 
+`QemuArgs=`
+
+: Space-delimited list of additional arguments to pass when invoking
+  qemu.
+
 `NspawnKeepUnit=`, `--nspawn-keep-unit`
 
 : When used, this option instructs underlying calls of systemd-nspawn to
index e674af7365db7655ac8a942cab03582c736de309..7b43a7b0b01a55a9572c9222d0c4b1cc07bb379e 100644 (file)
@@ -5691,6 +5691,14 @@ def create_parser() -> ArgumentParserMkosi:
     group.add_argument("--qemu-mem", help="Configure guest's RAM size", metavar="MEM", default="1G")
     group.add_argument("--qemu-kvm", action=BooleanAction, help="Configure whether to use KVM or not",
                        default=qemu_check_kvm_support())
+    group.add_argument(
+        "--qemu-args",
+        action=SpaceDelimitedListAction,
+        default=[],
+        # Suppress the command line option because it's already possible to pass qemu args as normal
+        # arguments.
+        help=argparse.SUPPRESS,
+    )
     group.add_argument(
         "--nspawn-keep-unit",
         action=BooleanAction,
@@ -6931,7 +6939,8 @@ def print_summary(args: MkosiArgs) -> None:
     MkosiPrinter.info("\nHOST CONFIGURATION:")
     MkosiPrinter.info("        Extra search paths: " + line_join_list(args.extra_search_paths))
     MkosiPrinter.info("             QEMU Headless: " + yes_no(args.qemu_headless))
-    MkosiPrinter.info("              Netdev:       " + yes_no(args.netdev))
+    MkosiPrinter.info("      QEMU Extra Arguments: " + line_join_list(args.qemu_args))
+    MkosiPrinter.info("                    Netdev: " + yes_no(args.netdev))
 
 
 def reuse_cache_tree(
@@ -7796,6 +7805,7 @@ def run_qemu_cmdline(args: MkosiArgs) -> Iterator[List[str]]:
                 "scsi-hd,drive=hd,bootindex=1",
             ]
 
+        cmdline += args.qemu_args
         cmdline += args.cmdline
 
         print_running_cmd(cmdline)
index 56db6839a407d108ee827439c724b6889bc08b42..d83bdf773c1682e73568db164d05755b1ebb5351 100644 (file)
@@ -518,6 +518,7 @@ class MkosiArgs:
     qemu_smp: str
     qemu_mem: str
     qemu_kvm: bool
+    qemu_args: Sequence[str]
 
     # systemd-nspawn specific options
     nspawn_keep_unit: bool
index ee1b01a0d287f9c043b025c9b8e0d661c59d3ddf..178d1ad23c5264bc63da684bf379aae920f74cee 100644 (file)
@@ -133,6 +133,7 @@ class MkosiConfig:
             "qemu_smp": "2",
             "qemu_mem": "1G",
             "qemu_kvm": mkosi.qemu_check_kvm_support(),
+            "qemu_args": [],
             "nspawn_keep_unit": False,
             "netdev": False,
             "ephemeral": False,