packer-builder-arm icon indicating copy to clipboard operation
packer-builder-arm copied to clipboard

Add repartition mode

Open davejbax opened this issue 8 months ago • 0 comments

Description

This PR creates a new image build method, repartition, which doesn't add much (or any, really) new functionality, but rather re-uses existing steps, effectively combining the new and resize methods.

This allows the user to, using a raw image file as a basis:

  • Overwrite the image's partition table with whatever content they define (via the existing image_partitions config)
  • Format newly created partitions with mkfs (the user chooses which partitions they want to format, as we don't know which ones are 'newly created' since we don't parse partition tables of existing images)
  • Resize the ext{2,3,4} filesystems of resized partitions with resize2fs

This is something that was especially useful in my particular use-case, but I think it could be useful more widely as well, hence this PR :)

Use-cases

  • Grow/shrink a partition in an existing image
  • Create new partitions at the end of the image file
    • Swap partition
    • Separate /home partition
  • Destroy an unwanted partition in an existing image

Backwards compatibility

I've tried to make this change entirely backwards-compatible, so that no existing builds will be affected by it.

To do this:

  • skip_mkfs defaults to false, and hence the Mkfs step behaviour is unchanged (it's only currently used with the new method, as far as I can tell, in which case we shouldn't be skipping it by default for any partitions)
  • resize_fs only has an effect when using the repartition method, and hence the behaviour of the resize step should be unchanged

davejbax avatar Dec 31 '23 01:12 davejbax