# Changes from disk_layout_v2:
# * Introduce 128MB MINIOS-A and MINIOS-B on partitions 9 and 10, with
#   10 being set as last_partition.
# * Reduce OEM partition 8 from 16MB to 4MB.
# * Remove -no-exports from ROOTFS-A squashfs options.
# * Add powerwash data as partition 11.
# * Delete 2gb-rootfs, 2gb-rootfs-updatable, and 4gb-rootfs.
{
  # 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": [
      {
        # MiniOS A partition.
        "num": 9,
        "label": "MINIOS-A",
        "type": "minios",
        "size": "128 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"
      },
      {
        # Board specific files, mostly unused.
        "num": 8,
        "label": "OEM",
        "type": "data",
        "size": "4 MiB",
        "fs_format": "ext4",
        "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"
      },
      {
        # Kernel for Slot A, no file system.
        "num": 2,
        "label": "KERN-A",
        "type": "kernel",
        "size": "32 MiB"
      },
      {
        # Slot A rootfs. Rootfs + extras must fit.
        # FS size + Verity (64 * FS blocks) + Boot Cache (200M).
        # Make sure that other layouts still have room for the
        # extras, should you increase FS size.
        #
        # Note that updates will fail if the rootfs size
        # shrinks. (crbug.com/192136)
        #
        # Note: fs_size is intentionally much lower than partition size. See
        # note under "Rootfs size limitations" in README.disk_layout
        #
        # 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": "4096 MiB",
        "fs_size": "2300 MiB",
        "uuid": "clear"
      },
      {
        # Kernel for Slot B, no file system.
        "num": 4,
        "label": "KERN-B",
        "type": "kernel",
        "size": "32 MiB"
      },
      {
        # Slot B rootfs. Must match Root A in size for normal
        # updates. Will contain copy of Root A after install, and
        # contain new rootfs's after runtime updates.
        "num": 5,
        "label": "ROOT-B",
        "type": "rootfs",
        "size": "4096 MiB"
      },
      {
        # Powerwash data, including rollback data.
        "num": 11,
        "label": "POWERWASH-DATA",
        "type": "data",
        "size": "4 MiB",
        "uuid": "random"
      },
      {
        # User data, fills all remaining space on drive.
        "num": 1,
        "label": "STATE",
        "type": "data",
        "fs_format": "ext4",
        "size": "4 GiB",
        "features": ["expand"],
        "uuid": "random"
      },
      {
        # MiniOS B partition.
        "num": 10,
        "label": "MINIOS-B",
        "type": "minios",
        "size": "128 MiB",
        # Places partition at the end of disk.
        "features": ["last_partition"]
      }
    ],
    # Used for installs on main device. By default, same as 'common'.
    "base": [
    ],
    # Used for bootable USB installs (not recovery).
    "usb": [
      {
        "num": 3,
        "size": "2400 MiB"
      },
      {
        "num": 5,
        "size": "2 MiB"
      },
      {
        # MINIOS-B partitions are not filled with anything on USB images.
        "num": 10,
        "size": "2 MiB",
        "type": "reserved"
      }
    ],
    # Used for factory install images.
    "factory_install": [
      {
        "num": 3,
        "size": "420 MiB",
        "fs_size": "400 MiB"
      },
      {
        "num": 5,
        "size": "2 MiB"
      },
      {
        "num": 1,
        "size": "140 MiB"
      },
      {
        "num": 10,
        "size": "2 MiB",
        "type": "reserved"
      }
    ],
    "recovery": [
      {
        # Kernel for Slot A, no file system.
        # Make the partition as large as the firmware supports so we can boot
        # larger recovery kernels.  The kernel won't actually be this large.
        "num": 2,
        "size": "512 MiB"
      },
      {
        # Shrunken rootfs partition to support smaller USB sticks,
        # and smaller recovery downloads.
        # Installation will expand this to size from base.
        # The offset to the beginning of this partition, and the FS
        # size must match base exactly to allow secure boot.
        "num": 3,
        "size": "2400 MiB"
      },
      {
        # 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"
      },
      {
        "num": 10,
        "size": "2 MiB",
        "type": "reserved"
      }
    ],
    # Huge rootfs, suitable for VM only images, should not be used
    # for actual hardware devices.
    "16gb-rootfs": [
      {
        "num": 3,
        "size": "16384 MiB",
        "fs_size": "16000 MiB"
      },
      {
        "num": 5,
        "size": "2 MiB"
      },
      {
        "num": 10,
        "size": "2 MiB",
        "type": "reserved"
      }
    ]
  }
}
