install: Use systemd-repart for partitioning - #2314
Conversation
If `systemd-repart` binary is present and we find one of the directories associated with systemd-repart configurations, then use systemd-repart for partitioning, else fallback to sfdisk Also, update the default ESP size to 2G for composefs installs. This only applies to sfdisk path. Closes: bootc-dev#2132 Signed-off-by: Pragyan Poudyal <pragyanpoudyal41999@gmail.com>
cgwalters
left a comment
There was a problem hiding this comment.
Thanks for starting this! ACK on the principle.
Needs docs and tests at least.
| } | ||
|
|
||
| let rootpn = | ||
| rootpn.ok_or_else(|| anyhow::anyhow!("systemd-repart output missing root partition"))?; |
There was a problem hiding this comment.
I think we should support images that have repart.d definitions that are expected to run on firstboot in the target environment, without defining the default root either.
I would flip this around a bit - we default to running repart.d definitions for the root and esp/xbootldr, but probably not the other ones? And we let the other ones naturally run on firstboot.
There was a problem hiding this comment.
I think we should support images that have repart.d definitions that are expected to run on firstboot in the target environment, without defining the default root either.
so this will entail us creating a root partition if it's not defined?
Agree with the second point. We can only include root,esp and xbootldr
There was a problem hiding this comment.
Re-reading the comment, I think I get it now. The main question then would be how would be figure out the sizes of the root partition? Doing a simple --dry-run with systemd-repart is probably the best way
There was a problem hiding this comment.
The main question then would be how would be figure out the sizes of the root partition?
We honor the repart defaults i.e. something like
[Partition]
Type=root
should be all that's needed to have that fill the remaining space.
For cloud scenarios a common thing is that the raw block device is expanded dynamically, and I think there repart will run again and should handle expansion of the root.
|
Currently we check fs-verity compatibility for composefs installations using the filesystem param passed via cli or in our config files. With systemd-repart, we will be allowing any filesystem to be used for root partition (not just the ones defined in our Filesystem enum). This poses an issue with checking fs-verity compatibility of filesystems that are not defined in our enum. This is probably going to be a design choice, should we: Read repart.d definitions, add more fs options in our enum to still be able to check for fs-verity compatibility |
I think ideally we do fsverity support detection early on dynamically instead of having a filesystem allowlist. But I'd vote for now we just let the install fail if fsverity is required and we fail to enable it instead of trying to match filesystems via repart.d |
If
systemd-repartbinary is present and we find one of the directories associated with systemd-repart configurations, then use systemd-repart for partitioning, else fallback to sfdiskAlso, update the default ESP size to 2G for composefs installs. This only applies to sfdisk path.
Closes: #2132