from __future__ import annotations from pathlib import Path import struct SECTOR_BYTES = 512 PARTITION_LBA = 1 PARTITION_SECTORS = 8192 RESERVED_SECTORS = 1 FAT_COUNT = 2 FAT_SECTORS = 32 ROOT_ENTRIES = 512 ROOT_SECTORS = ROOT_ENTRIES * 32 // SECTOR_BYTES DATA_RELATIVE_SECTOR = RESERVED_SECTORS + FAT_COUNT * FAT_SECTORS + ROOT_SECTORS def build_fixture(path: Path, config_file: bytes) -> Path: if len(config_file) != 64 * 1024: raise ValueError("配置文件必须为 64 KiB") image = bytearray((PARTITION_LBA + PARTITION_SECTORS) * SECTOR_BYTES) image[510:512] = b"\x55\xaa" partition_entry = 446 image[partition_entry + 4] = 0x06 struct.pack_into(" int: return (PARTITION_LBA + RESERVED_SECTORS) * SECTOR_BYTES