summaryrefslogtreecommitdiffstats
path: root/bin/sbuild-qemu-update
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xbin/sbuild-qemu-update16
1 files changed, 15 insertions, 1 deletions
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__':