The factory image for Raspberry PI4 comes with only 104MB, which is not enough at all. I don’t like exroot solution or expand the partition after firmware upgraded, because I have to do it every time I upgrade the firmware. I wonder if there is a way to install user packages to another partition. For example, I have 16GB SD card and there are plenty room left after firmware upgrade.
extroot is always a quite major complication in regards to upgrades, I personally avoid it at all costs.
Using the imagebuilder to (always!) set a different partition size (and including the packages you'd normally install at runtime) would be my way out of this -- if you really need all that much stuff (it's a router, not a general purpose server - but I do know that f2fs has an enormous fs overhead on a 104 MB fs, so…).
--
…and mere data goes into a dedicated partition.
I also have a pi4b. What works best for me is when first setting up the sd card I do the normal dd=if and once that's done I fire up kde partition manager to expand the 104mb partition to 1024. Then I create a new partition in the unused free space of the sd card for storing extra junk. Finally after I get the pi up and running I set the owut to keep the root partition at 1024mb after an upgrade.
Probably there is better/easier ways to automate this but I am not super technical and this works for me, which is what matters.