#!/usr/bin/env python3 """Create tiny isolated GPT/ext4 fixtures; never use an installed management disk.""" import argparse import json from pathlib import Path import shutil import struct import subprocess import uuid import zlib def run(arguments): return subprocess.run(arguments, check=True, capture_output=True, text=True) def disk(destination, filesystem): sectors = 262144 entries = bytearray(128 * 128) struct.pack_into("<16s16sQQQ72s", entries, 0, uuid.UUID("0fc63daf-8483-4772-8e79-3d69d8477de4").bytes_le, uuid.uuid4().bytes_le, 2048, 2048 + filesystem.stat().st_size // 512 - 1, 0, "root".encode("utf-16le").ljust(72, b"\0")) disk_id = uuid.uuid4().bytes_le def header(current, alternate, entry_lba): result = bytearray(512) struct.pack_into("<8sIIIIQQQQ16sQIII", result, 0, b"EFI PART", 0x10000, 92, 0, 0, current, alternate, 34, sectors - 34, disk_id, entry_lba, 128, 128, zlib.crc32(entries)) struct.pack_into("