[systemd-devel] How to use systemd-repart partitions?

Tobias Hunger tobias.hunger at gmail.com
Wed May 20 11:58:20 UTC 2020


Hi Lennart,

On Wed, May 20, 2020 at 12:01 PM Lennart Poettering
<lennart at poettering.net> wrote:
> On Mi, 20.05.20 00:12, Tobias Hunger (tobias.hunger at gmail.com) wrote:
> > The one thing that is frustrating is to get a machine image generated
> > by my build server onto a new piece of hardware. So I wanted to see
> > how far I can get with systemd-repart and co. to get this initial
> > deployment to new hardware more automated after booting with the
> > machine image from an USB stick.
>
> So I eventually want to cover three usecases with systemd-repart:
>
> 1. building OS images
> 2. installing an OS from an installer medium onto a host medium
> 3. adapting an OS images to the medium it has been dd'ed to on first
>    boot
>
> I think the 3rd usecase we already cover quite OK.

Yeap.

> To deliver the others, I want to add Encrypt= and Format= as
> mentioned. To cover the 2nd usecase I then also want to provide
> CopyBlocks= and CopyFiles=.

I assume CopyBlocks= will just dd and so does not need a formatted partition?

CopyFiles= obviously does.

> The former would stream data into a
> partition that is created on the block level. Primary usecase would be
> to copy a partition 1:1 from the installer medium onto the host
> medium. The latter would copy in a file tree on the fs level.

What about things like create subvolumes on BTRFS? systemd-tmpfiles
does support that.

> Image builder tools such as "mkosi" could make use of this to be
> simplified a bit: an invocation of "systemd-repart" will set up the
> basic partition layout and file systems. "systemd-dissect --mount"
> would then mount this, before dnf/apt/… are run. "bootctl --image=…"
> would then install the boot loader (that switch doesn't exist yet, but
> is on the todo list, too).

Yes, I am considering to move my image generation over to
systemd-repart as well.

> This sounds for the perfect usecase for systemd-repart.
>
> > With your extended systemd-repart: How can I reference these newly
> > created filesystems in /etc/fstab?
>
> Well, my thinking was to mostly rely on the "gpt-auto" logic,
> i.e. that simply because they carry correct gpt type uuids systemd
> would discover and find them.

gpt-auto is not enough. I will want to set up pretty complex things
like dm/crypto/etc.

> > So how can I reliably reference filesystems newly created by
> > systemd-repart in /etc/fstab?
>
> So, if the gpt auto logic doesn't suffice, then probably labels. Or
> you come up with your own UUIDs for the partitions.

I opened a PR for custom partition UUIDs.

> So I'd not discount labels. I think we should start supporting
> specifier expansion in the label strings, so that we can generate them
> somewhat automatically, derived from environment parameters.

I will probably prefer UUIDs to uniquely identify something over labels:-)

> > PS: Is systemd-tmpfiles run after mounts with --prefix=/mnt/point? Or
> > how do you see people populating the newly created filesystems?
>
> As indicated above with CopyBlocks= and CopyFiles= if this shall be
> done during image creation. Copying in blocks and files is probably a
> 20 line patch or so only (we have helpers for it in place anyway, we
> just need to call them), and has again this nice benefit that we can
> schedule it so that the partitions pop up fully populated and there's
> no time where they are half initialized. This means you can abort an
> installer any time and the disk will appear as it was before, only
> when it comes to the very latest step the partitions suddenly pop into
> existance, fully populated with whatever they shall contain.

Nice, but what about btrfs subvolumes? I will probably end up needing those:-)

Best Regards,
Tobias

> That said, I also want to add an --image= switch to "systemd-tmpfiles"
> and "systemd-sysusers" so that you can run them easily offline too if
> you want, just by pointing them to some disk image.

Good idea!

Best Regards,
Tobias


More information about the systemd-devel mailing list