diff --git a/tools/osbuild-mpp b/tools/osbuild-mpp index b3165936..c2f440a7 100755 --- a/tools/osbuild-mpp +++ b/tools/osbuild-mpp @@ -974,13 +974,19 @@ class Image: def from_dict(cls, js): size = js["size"] data = js["table"] + sector_size = js.get('sector_size', 512) with tempfile.TemporaryDirectory() as tmp: image = os.path.join(tmp, "disk.img") subprocess.run(["truncate", "--size", size, image], check=True) - - table = PartitionTable.from_dict(data) - table.write_to(image) + cp = subprocess.run(["losetup", "--find", "--show", f"--sector-size={sector_size}", image], + stdout=subprocess.PIPE, check=True) + loopimage = cp.stdout.rstrip() + try: + table = PartitionTable.from_dict(data) + table.write_to(loopimage) + finally: + subprocess.run(["losetup", "-d", loopimage]) return cls(size, table)