diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/sbuild-qemu-boot | 2 | ||||
-rwxr-xr-x | bin/sbuild-qemu-update | 16 |
2 files changed, 16 insertions, 2 deletions
diff --git a/bin/sbuild-qemu-boot b/bin/sbuild-qemu-boot index 1fd93ae..7a411e0 100755 --- a/bin/sbuild-qemu-boot +++ b/bin/sbuild-qemu-boot @@ -274,7 +274,7 @@ def main(): '-fw_cfg', f'name=opt/sbuild-qemu/tty-cols,string={termsize.columns}', ]) - args.append(image) + args.extend(['-drive', f'file={image},discard=unmap,if=virtio']) print(' '.join(str(a) for a in args)) if parsed_args.noexec: diff --git a/bin/sbuild-qemu-update b/bin/sbuild-qemu-update index 6e08274..2de7ab5 100755 --- a/bin/sbuild-qemu-update +++ b/bin/sbuild-qemu-update @@ -180,6 +180,12 @@ def update_interaction(child, quiet): child.expect('root@host:~# ') child.sendline('sync') child.expect('root@host:~# ') + child.sendline('mount -o remount,discard /') + child.expect('root@host:~# ') + child.sendline('fstrim /') + child.expect('root@host:~# ') + child.sendline('sync') + child.expect('root@host:~# ') # Don't recall what issue this solves, but it solves it child.sendline('sleep 1') child.expect('root@host:~# ') @@ -257,7 +263,7 @@ def main(): '-m', '1024', '-smp', '1', '-nographic', - image, + '-drive', f'file={image},discard=unmap,if=virtio', ]) if parsed_args.extra_args: args.extend(parsed_args.extra_args) @@ -278,6 +284,14 @@ def main(): except pexpect.TIMEOUT: print("Update timed out. Consider using --timeout.", file=sys.stderr) child.terminate() + child.wait() + + try: + subprocess.check_call(["qemu-img", "convert", "-O", "qcow2", image, f"{image}.tmp"]) + except subprocess.CalledProcessError as err: + print(f"Error converting image: {err}", file=sys.stderr) + return + os.replace(f"{image}.tmp", image) if __name__ == '__main__': |