self.formatter = DebugFormatter(format, datefmt, style)
class Partition:
- def __init__(self, name, size, start=None, ptype=None, fstype="raw", bootable=False):
+ def __init__(self, name, size, start=None, ptype=None, fstype="raw", bootable=False, **kwargs):
self.name = name
self.size = size
self.start = start
if self.user_size < 100:
logging.error(f"Not enough space for user data ({self.user_size}). Use larger storage.")
raise OSError(errno.ENOSPC, os.strerror(errno.ENOSPC), device)
+ # self.user_partition counts from 0
self.part_table[self.user_partition]["size"] = self.user_size
self.label = Label(self.part_table, ltype)
+ self.binaries = self._get_binaries('binaries')
+
+ def _get_binaries(self, key):
+ binaries = {}
+ for i, p in enumerate(self.part_table):
+ b = p.get(key, None)
+ if b is None:
+ continue
+ if isinstance(b, str):
+ binaries[b] = i + 1
+ elif isinstance(b, list):
+ for f in b:
+ binaries[f] = i + 1
+ return binaries
def get_partition_index(self, binary):
return self.binaries.get(binary, None)
pass
class SdFusingTargetAB(SdFusingTarget):
+ def __init__(self, device, ltype):
+ super().__init__(device, ltype)
+ self.binaries_b = self._get_binaries('binaries_b')
+
def get_partition_index(self, binary):
if self.update == 'b':
return self.binaries_b.get(binary, None)
class Rpi3(RpiInitParams, SdFusingTarget):
long_name = "Raspberry Pi 3"
part_table = [
- {"size": 64, "fstype": "vfat", "name": "boot", "start": 4, "ptype": "0xe", "bootable": True},
- {"size": 3072, "fstype": "ext4", "name": "rootfs"},
- {"size": 1344, "fstype": "ext4", "name": "system-data"},
+ {"size": 64, "fstype": "vfat", "name": "boot", "start": 4, "ptype": "0xe", "bootable": True,
+ "binaries": "boot.img"},
+ {"size": 3072, "fstype": "ext4", "name": "rootfs",
+ "binaries": "rootfs.img"},
+ {"size": 1344, "fstype": "ext4", "name": "system-data",
+ "binaries": "system-data.img"},
{"size": None, "ptype": "5", "name": "extended", "start": 4484},
- {"size": None, "fstype": "ext4", "name": "user"},
- {"size": 32, "fstype": "ext4", "name": "modules"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery"},
+ {"size": None, "fstype": "ext4", "name": "user",
+ "binaries": "user.img"},
+ {"size": 32, "fstype": "ext4", "name": "modules",
+ "binaries": "modules.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk",
+ "binaries": "ramdisk.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery",
+ "binaries": "ramdisk-recovery.img"},
{"size": 8, "fstype": "ext4", "name": "inform"},
- {"size": 256, "fstype": "ext4", "name": "hal"},
+ {"size": 256, "fstype": "ext4", "name": "hal",
+ "binaries": "hal.img"},
{"size": 125, "fstype": "ext4", "name": "reserved2"},
]
- binaries = {
- "boot.img": 1,
- "rootfs.img": 2,
- "system-data.img": 3,
- "user.img": 5,
- "modules.img": 6,
- "ramdisk.img": 7,
- "ramdisk-recovery.img": 8,
- "hal.img": 10,
- }
params = (('reboot-param.bin', ''),)
def __init__(self, device, args):
long_name = "Raspberry Pi 4 w/ super partition"
part_table = [
{"size": 64, "fstype": "vfat", "name": "boot_a","start": 4,
- "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
- {"size": 6656, "fstype": "ext4", "name": "super"},
- {"size": 1344, "fstype": "ext4", "name": "system-data"},
+ "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
+ "binaries": "boot.img"},
+ {"size": 6656, "fstype": "ext4", "name": "super",
+ "binaries": "super.img"},
+ {"size": 1344, "fstype": "ext4", "name": "system-data",
+ "binaries": "system-data.img"},
{"size": 36, "fstype": "raw", "name": "none"},
- {"size": None, "fstype": "ext4", "name": "user"},
- {"size": 32, "fstype": "ext4", "name": "module_a"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk_a"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_a"},
+ {"size": None, "fstype": "ext4", "name": "user",
+ "binaries": "user.img"},
+ {"size": 32, "fstype": "ext4", "name": "module_a",
+ "binaries": "modules.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk_a",
+ "binaries": "ramdisk.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_a",
+ "binaries": "ramdisk-recovery.img"},
{"size": 8, "fstype": "ext4", "name": "inform"},
{"size": 64, "fstype": "vfat", "name": "boot_b",
- "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
- {"size": 32, "fstype": "ext4", "name": "module_b"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk_b"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_b"},
+ "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
+ "binaries_b": "boot.img"},
+ {"size": 32, "fstype": "ext4", "name": "module_b",
+ "binaries_b": "modules.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk_b",
+ "binaries_b": "ramdisk.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_b",
+ "binaries_b": "ramdisk-recovery.img"},
{"size": 4, "fstype": "ext4", "name": "reserved0"},
{"size": 64, "fstype": "ext4", "name": "reserved1"},
{"size": 125, "fstype": "ext4", "name": "reserved2"}
]
- binaries = {
- "boot.img": 1,
- "super.img": 2,
- "system-data.img": 3,
- "user.img": 5,
- "modules.img": 6,
- "ramdisk.img": 7,
- "ramdisk-recovery.img": 8,
- }
- binaries_b = {
- "boot.img": 10,
- "modules.img": 11,
- "ramdisk.img": 12,
- "ramdisk-recovery.img": 13,
- }
params = (('reboot-param.bin', 'norm'),
('reboot-param.info', 'norm'),
('partition-ab.info', 'a'),
long_name = "Raspberry Pi 4"
part_table = [
{"size": 64, "fstype": "vfat", "name": "boot_a", "start": 4,
- "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
- {"size": 3072, "fstype": "ext4", "name": "rootfs_a"},
- {"size": 1344, "fstype": "ext4", "name": "system-data"},
+ "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
+ "binaries": "boot.img"},
+ {"size": 3072, "fstype": "ext4", "name": "rootfs_a",
+ "binaries": "rootfs.img"},
+ {"size": 1344, "fstype": "ext4", "name": "system-data",
+ "binaries": "system-data.img"},
{"size": 36, "fstype": "raw", "name": "none"},
- {"size": None, "fstype": "ext4", "name": "user"},
- {"size": 32, "fstype": "ext4", "name": "module_a"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk_a"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_a"},
+ {"size": None, "fstype": "ext4", "name": "user",
+ "binaries": "user.img"},
+ {"size": 32, "fstype": "ext4", "name": "module_a",
+ "binaries": "modules.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk_a",
+ "binaries": "ramdisk.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_a",
+ "binaries": "ramdisk-recovery.img"},
{"size": 8, "fstype": "ext4", "name": "inform"},
- {"size": 256, "fstype": "ext4", "name": "hal_a"},
+ {"size": 256, "fstype": "ext4", "name": "hal_a",
+ "binaries": "hal.img"},
{"size": 64, "fstype": "vfat", "name": "boot_b",
- "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
- {"size": 3072, "fstype": "ext4", "name": "rootfs_b"},
- {"size": 32, "fstype": "ext4", "name": "module_b"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk_b"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_b"},
- {"size": 256, "fstype": "ext4", "name": "hal_b"},
+ "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
+ "binaries_b": "boot.img"},
+ {"size": 3072, "fstype": "ext4", "name": "rootfs_b",
+ "binaries_b": "rootfs.img"},
+ {"size": 32, "fstype": "ext4", "name": "module_b",
+ "binaries_b": "modules.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk_b",
+ "binaries_b": "ramdisk.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_b",
+ "binaries_b": "ramdisk-recovery.img"},
+ {"size": 256, "fstype": "ext4", "name": "hal_b",
+ "binaries_b": "hal.img"},
{"size": 4, "fstype": "ext4", "name": "param"},
{"size": 64, "fstype": "ext4", "name": "reserved1"},
{"size": 125, "fstype": "ext4", "name": "reserved2"},
]
- binaries = {
- "boot.img": 1,
- "rootfs.img": 2,
- "system-data.img": 3,
- "user.img": 5,
- "modules.img": 6,
- "ramdisk.img": 7,
- "ramdisk-recovery.img": 8,
- "hal.img": 10,
- }
- binaries_b = {
- "boot.img": 11,
- "rootfs.img": 12,
- "modules.img": 13,
- "ramdisk.img": 14,
- "ramdisk-recovery.img": 15,
- "hal.img": 16,
- }
params = (('reboot-param.bin', 'norm'),
('reboot-param.info', 'norm'),
('partition-ab.info', 'a'),
long_name = "QEMU RISC-V 64-bit"
part_table = [
{"size": 2, "fstype": "raw", "name": "SPL", "start": 4,
- "ptype": "2E54B353-1271-4842-806F-E436D6AF6985"},
+ "ptype": "2E54B353-1271-4842-806F-E436D6AF6985",
+ "binaries": ""},
{"size": 4, "fstype": "raw", "name": "u-boot",
- "ptype": "5B193300-FC78-40CD-8002-E86C45580B47"},
+ "ptype": "5B193300-FC78-40CD-8002-E86C45580B47",
+ "binaries": ["u-boot.img", "u-boot.itb"],},
{"size": 292, "fstype": "vfat", "name": "boot_a",
- "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
+ "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
+ "binaries": "boot.img"},
{"size": 36, "fstype": "raw", "name": "none"},
- {"size": 3072, "fstype": "ext4", "name": "rootfs_a"},
- {"size": 1344, "fstype": "ext4", "name": "system-data"},
- {"size": None, "fstype": "ext4", "name": "user"},
- {"size": 32, "fstype": "ext4", "name": "module_a"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk_a"},
- {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_a"},
+ {"size": 3072, "fstype": "ext4", "name": "rootfs_a",
+ "binaries": "rootfs.img"},
+ {"size": 1344, "fstype": "ext4", "name": "system-data",
+ "binaries": "system-data.img"},
+ {"size": None, "fstype": "ext4", "name": "user",
+ "binaries": "user.img"},
+ {"size": 32, "fstype": "ext4", "name": "module_a",
+ "binaries": "modules.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk_a",
+ "binaries": "ramdisk.img"},
+ {"size": 32, "fstype": "ext4", "name": "ramdisk-recovery_a",
+ "binaries": "ramdisk-recovery.img"},
{"size": 8, "fstype": "raw", "name": "inform"},
- {"size": 256, "fstype": "ext4", "name": "hal_a"},
+ {"size": 256, "fstype": "ext4", "name": "hal_a",
+ "binaries": "hal.img"},
{"size": 4, "fstype": "raw", "name": "reserved0"},
{"size": 64, "fstype": "raw", "name": "reserved1"},
{"size": 125, "fstype": "raw", "name": "reserved2"},
]
- binaries = {
- "u-boot-spl.bin.normal.out": 1,
- "u-boot.img": 2,
- "u-boot.itb": 2,
- "boot.img": 3,
- "rootfs.img": 5,
- "system-data.img": 6,
- "user.img": 7,
- "modules.img": 8,
- "ramdisk.img": 9,
- "ramdisk-recovery.img": 10,
- "hal.img": 12,
- }
def __init__(self, device, args):
self.user_partition = 6