]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Refactor image growing
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 22 May 2023 12:08:28 +0000 (14:08 +0200)
committerJörg Behrmann <behrmann@physik.fu-berlin.de>
Mon, 22 May 2023 15:00:16 +0000 (17:00 +0200)
mkosi/__init__.py
mkosi/qemu.py

index c63b0ab789edde6588d7bd133ae79db15bc398a4..e0073b3f645b0bc107e6448bd8fb27d6c0402d87 100644 (file)
@@ -34,7 +34,7 @@ from mkosi.log import Style, color_error, complete_step, die, log_step
 from mkosi.manifest import Manifest
 from mkosi.mounts import dissect_and_mount, mount_overlay, scandir_recursive
 from mkosi.pager import page
-from mkosi.qemu import machine_cid, run_qemu
+from mkosi.qemu import grow_image, machine_cid, run_qemu
 from mkosi.remove import unlink_try_hard
 from mkosi.run import become_root, fork_and_wait, run, run_workspace_command, spawn
 from mkosi.state import MkosiState
@@ -1903,6 +1903,9 @@ def run_shell(args: MkosiArgs, config: MkosiConfig) -> None:
         cmdline += ["--"]
         cmdline += args.cmdline
 
+    if config.output_format == OutputFormat.disk:
+        grow_image(config.output_dir / config.output, size="8G")
+
     with acl_toggle_boot(config):
         run(cmdline, stdin=sys.stdin, stdout=sys.stdout, env=os.environ, log=False)
 
@@ -2079,10 +2082,6 @@ def run_verb(args: MkosiArgs, presets: Sequence[MkosiConfig]) -> None:
     if build and args.auto_bump:
         bump_image_version()
 
-    # Give disk images some space to play around with if we're booting one.
-    if args.verb in (Verb.shell, Verb.boot, Verb.qemu) and last.output_format == OutputFormat.disk:
-        run(["systemd-repart", "--definitions", "", "--size", "8G", "--pretty", "no", last.output_dir / last.output])
-
     with prepend_to_environ_path(last.extra_search_paths):
         if args.verb in (Verb.shell, Verb.boot):
             run_shell(args, last)
index bc6c1738b4735f3e9bab89aa2ee7b7ef3c6f65ec..b38b1d6ff6fa24c7bff60c31733d04c9ea153762 100644 (file)
@@ -191,6 +191,10 @@ def vsock_notify_handler() -> Iterator[tuple[str, dict[str, str]]]:
             yield f"vsock:{socket.VMADDR_CID_HOST}:{vsock.getsockname()[1]}", messages
 
 
+def grow_image(image: Path, *, size: str) -> None:
+    run(["systemd-repart", "--definitions", "", "--size", size, "--pretty", "no", image])
+
+
 def run_qemu(args: MkosiArgs, config: MkosiConfig) -> None:
     accel = "tcg"
     if config.qemu_kvm == ConfigFeature.enabled or (config.qemu_kvm == ConfigFeature.auto and qemu_check_kvm_support()):
@@ -269,6 +273,9 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig) -> None:
         else:
             fname = config.output_dir / config.output
 
+        if config.output_format == OutputFormat.disk:
+            grow_image(fname, size="8G")
+
         # Debian images fail to boot with virtio-scsi, see: https://github.com/systemd/mkosi/issues/725
         if config.output_format == OutputFormat.cpio:
             kernel = config.output_dir / config.output_split_kernel