From: Daan De Meyer Date: Mon, 22 May 2023 12:08:28 +0000 (+0200) Subject: Refactor image growing X-Git-Tag: v15~151 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed744c3410fabfe8a8345c00f4718ca89478caa2;p=thirdparty%2Fmkosi.git Refactor image growing --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index c63b0ab78..e0073b3f6 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -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) diff --git a/mkosi/qemu.py b/mkosi/qemu.py index bc6c1738b..b38b1d6ff 100644 --- a/mkosi/qemu.py +++ b/mkosi/qemu.py @@ -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