blob: db4cf1c62f999410afca57809a17a15fc0534c30 [file] [log] [blame]
{
# See README_disk_layout
"parent": "common_disk_layout.json",
"metadata": {
"block_size": 512,
"fs_block_size": 4096,
"fs_align": "2 MiB"
},
"layouts": {
# common is the standard layout template.
"common": [
{
# Reserve space for RW firmware. Not used on modern boards.
# BIOS Boot Partition for COS.
"num": 11,
"label": "RWFW",
"type": "firmware",
"size": "8 MiB"
},
{
# Unused partition, reserved for software slot C.
"num": 6,
"label": "KERN-C",
"type": "kernel"
},
{
# Unused partition, reserved for software slot C.
"num": 7,
"label": "ROOT-C",
"type": "rootfs"
},
{
# Unused partition, reserved for future changes.
"num": 9,
"type": "reserved",
"label": "reserved"
},
{
# Unused partition, reserved for future changes.
"num": 10,
"type": "reserved",
"label": "reserved"
},
{
# Kernel for Slot A, no file system.
# Not used by COS.
"num": 2,
"label": "KERN-A",
"type": "kernel",
"size": "16 MiB"
},
{
# Kernel for Slot B, no file system.
# Not used by COS.
"num": 4,
"label": "KERN-B",
"type": "kernel",
"size": "16 MiB"
},
{
# Board specific files, OEM partition for COS/Anthos.
# Used for installing application binaries like Anthos.
"num": 8,
"label": "OEM",
"type": "data",
"fs_format": "ext4",
"size": "2048 MiB",
"uuid": "random"
},
{
# Used for Legacy Bios, and EFI Bios, not ChromeOS hardware
"num": 12,
"label": "EFI-SYSTEM",
"type": "efi",
"fs_format": "vfat",
"size": "64 MiB",
"uuid": "clear"
},
{
# Slot B rootfs. Must match Root A in side for normal
# updates. Will contain copy of Root A after install, and
# contain new rootfs's after runtime updates.
# Shrink to 16 MiB since we disable update-engine.
"num": 5,
"label": "ROOT-B",
"type": "rootfs",
"size": "16 MiB"
},
{
# Slot A rootfs. Rootfs + extras (AKA verity) must fit, AKA:
# size <= FS size + Verity size
#
# Verity's size can be found by:
# verity_bytes = div_round_up(fs_bytes, 128) +
# div_round_up(fs_bytes, 16384) + 4096
#
# That means that the FS MiB should be:
# ((total_MiB * 1024 * 1024 - 4096) * 16384 / 16513) / (1024 * 1024)
#
# The reason to not set your fs_size to be exactly what is specified
# by the formula above is to make builds start failing a little bit
# before we're truly out of space, allowing a quick release valve to
# relieve some of the pressure while we try to find other ways to save
# space.
#
# Note that in the past it was observed that updates would fail if the
# rootfs size shrunk (crbug.com/192136). There are no known reasons to
# shrink the rootfs size, but if you come up with one you should
# revisit that bug and make sure it won't affect you.
#
# Changes to the offset of this partition may require
# changes in cros-signing/security_test_baselines/
# ensure_secure_kernelparams.config to allow secure boot.
"num": 3,
"label": "ROOT-A",
"type": "rootfs",
"fs_format": "ext2",
"fs_options": {
"squashfs": "-noI -comp lzo -Xalgorithm lzo1x_999 -Xcompression-level 9",
"btrfs": "skinny-metadata"
},
"size": "2048 MiB",
"fs_size": "2000 MiB",
"uuid": "clear"
},
{
# User data, stateful partition.
# User data, fills all remaining space on drive.
"num": 1,
"label": "STATE",
"type": "data",
"fs_format": "ext4",
"fs_options": {
# A consequence of this option is that some file system
# structures are initialized lazily when resizing,
# resulting in much faster resize2fs invocations.
"ext4": "-O metadata_csum"
},
"size": "5000 MiB",
"features": ["expand"],
"uuid": "random"
}
],
# Used for installs on main device
# by default, same as 'common'.
"base": [
],
# Used for bootable USB installs (not recovery).
"usb": [
{
# Slot B rootfs, unused on USB, but pad to 2M.
# installation will expand this to size from base.
"num": 5,
"size": "2 MiB"
}
],
# Used for factory install images.
"factory_install": [
{
"num": 12,
"size": "32 MiB"
},
{
"num": 5,
"size": "2 MiB"
},
{
"num": 3,
"size": "420 MiB",
"fs_size": "400 MiB"
},
{
"num": 1,
"size": "140 MiB"
}
],
# Used for recovery images.
"recovery": [
{
# Slot B rootfs, unused on USB, but pad to 2M.
# installation will expand this to size from base.
"num": 5,
"size": "2 MiB"
},
{
# Stateful on recovery is dynamically resized larger.
"num": 1,
"size": "2 MiB"
}
],
# Larger rootfs, suitable for development with symbols, etc.
# Cannot apply updates when running from USB (no slot B).
"2gb-rootfs": [
{
# Will be grown to size from base on install.
"num": 5,
"size": "2 MiB"
},
{
# Will be shrunk to size from base on install.
"num": 3,
"size": "2048 MiB",
"fs_size": "2000 MiB"
}
],
# Larger rootfs, suitable for development with symbols, etc.
# CAN apply updates when running from USB.
"2gb-rootfs-updatable": [
{
# The partition size matches base, so it's installable.
"num": 5,
"size": "2048 MiB"
},
{
# The partition size matches base, so it's installable.
"num": 3,
"size": "2048 MiB",
"fs_size": "2000 MiB"
},
{
"num": 1,
"size": "4096 MiB"
}
],
# Very large rootfs, suitable for development with symbols,
# etc. Cannot apply updates when running from USB (no slot B)
"4gb-rootfs": [
{
"num": 5,
"size": "2 MiB"
},
{
# This partition is larger than the base partition, so the
# installer will corrupt the disk during installation.
"num": 3,
"size": "4096 MiB",
"fs_size": "4000 MiB"
}
],
# Huge rootfs, suitable for VM only images, should not be used
# for actual hardware devices.
"16gb-rootfs": [
{
"num": 5,
"size": "2 MiB"
},
{
"num": 3,
"size": "16384 MiB",
"fs_size": "16000 MiB"
}
]
}
}