| { |
| # See README_disk_layout |
| "parent": "common_disk_layout.json", |
| |
| "metadata": { |
| "block_size": 512, |
| "fs_block_size": 4096 |
| }, |
| "layouts": { |
| # common is the standard layout template. |
| "common": [ |
| { |
| # Reserve space for RW firmware. Only used on some boards. |
| "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" |
| }, |
| { |
| # Pad out so Kernel A starts on a 4096 block boundry for |
| # performance. This is especially important on Daisy. |
| "type": "blank", |
| "size": "2014 KiB" |
| }, |
| { |
| # Kernel for Slot A, no file system. |
| "num": 2, |
| "label": "KERN-A", |
| "type": "kernel", |
| "size": "16 MiB" |
| }, |
| { |
| # Kernel for Slot B, no file system. |
| "num": 4, |
| "label": "KERN-B", |
| "type": "kernel", |
| "size": "16 MiB" |
| }, |
| { |
| # Board specific files, mostly unused. |
| "num": 8, |
| "label": "OEM", |
| "type": "data", |
| "fs_format": "ext4", |
| "size": "16 MiB", |
| "uuid": "random" |
| }, |
| { |
| # Pad out, but not sure why. |
| "type": "blank", |
| "size": "64 MiB" |
| }, |
| { |
| # Used for Legacy Bios, and EFI Bios, not ChromeOS hardware |
| "num": 12, |
| "label": "EFI-SYSTEM", |
| "type": "efi", |
| "fs_format": "vfat", |
| "size": "32 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. |
| "num": 5, |
| "label": "ROOT-B", |
| "type": "rootfs", |
| "size": "2048 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": "1991 MiB", |
| "uuid": "clear" |
| }, |
| { |
| # User data, fills all remaining space on drive. |
| "num": 1, |
| "label": "STATE", |
| "type": "data", |
| "fs_format": "ext4", |
| "size": "4 GiB", |
| "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": "4 GiB" |
| } |
| ], |
| # 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" |
| } |
| ] |
| } |
| } |