tree: 439d3a8dadd0b96b0c46de7b8d061b5bd1ed259c [path history] [tgz]
  1. Android.bp
  2. README.md
  3. aidl/
  4. dynamic_partitions_device_info.proto
  5. lpdump.cc
  6. lpdump_host.cc
  7. lpdump_target.cc
  8. lpdumpd.cc
  9. lpdumpd.rc
  10. lpflash.cc
  11. lpmake.cc
  12. lpunpack.cc
partition_tools/README.md

Dynamic Partition Tools

lpmake

lpmake is a command-line tool for generating a “super” partition image. It can currently generate two types of images:

  • Sparse images, for traditional fastboot.
  • Metadata-only images, for the lpflash utility.

The following command-line arguments are required:

  • -d,--device-size - The size of the “super” partition on the device. It must match exactly, and it must be evenly divisible by the sector size (512 bytes).
  • -m,--metadata-size - The maximum size that partition metadata may consume. A partition entry uses 64 bytes and an extent entry uses 16 bytes. The minimum size is 512 bytes.
  • -s,--metadata-slots - The number of slots available for storing metadata. This should match the number of update slots on the device, 2 for A/B devices and 1 for non-A/B.
  • -p,--partition=DATA - Add a partition to the metadata. At least one partition must be defined. The format for the data string is <name>:<GUID>:<attributes>:<size>. The attributes must be either none or readonly. The size will be rounded up to the nearest aligned block (see below).
  • -o,--output=FILE - The output file for writing the image.

Optional arguments:

  • --alignment=N - By default, lpmake will align partitions to 1MiB boundaries. However, an alternate alignment can be specified if desired. This is useful for devices with a minimum I/O request size where mis-aligned partition boundaries could be a performance issue.
  • --alignment-offset=N - In some cases, the “super” partition is misaligned within its parent block device. This offset can be used to correct for that.
  • --sparse - If set, the output image will be in sparse format for flashing with fastboot. Otherwise, by default, the image will be a minimal format usable with lpdump and lpflash.
  • -b,--block-size=N - When writing a sparse image, the device may require a specific block size. That block size can be specified here. The alignment must be a multiple of the block size. By default the block size is 4096.
  • -i,--image=[NAME=FILE] - When writing a sparse image, include the contents of FILE as the data for the partition named NAME. The file can be a normal file or a sparse image, but the destination size must be less than or equal to the partition size. This option is only available when creating sparse images.

Example usage. This specifies a 10GB super partition for an A/B device, with a single 64MiB “cache” partition.

lpmake --device-size 10240000000 \
       --metadata-size 65536     \
       --metadata-slots 2        \
       -o /tmp/super.img         \
       -p "cache:2da85788-f0e1-4fda-9ee7-e5177eab184b:none:67108864" \
       -i "cache=out/target/hikey960/cache.img"

lpdump

lpdump displays pretty-printed partition metadata. It accepts a single argument, which can be:

  • A path to a non-sparse image from lpmake.
  • A path to a filesystem image or block device.

It also accepts an optional argument -s,--slot=N which can dump a specific metadata slot (the default is 0).

Usage: lpdump [-s,--slot=N] PATH

lpflash

lpflash writes a non-sparse image from lpmake to a block device. It is intended to be run on the device itself.

Usage: lpflash /dev/block/sdX /path/to/image/file