[systemd-devel] systemd-repart /etc automount via discoverable partition specification

Nils Kattenbeck nilskemail at gmail.com
Mon Sep 11 18:02:56 UTC 2023


On Mon, Sep 11, 2023 at 11:49 AM Lennart Poettering
<lennart at poettering.net> wrote:
>
> On Mo, 11.09.23 11:39, Nils Kattenbeck (nilskemail at gmail.com) wrote:
>
> > On Mon, Sep 11, 2023, 10:54 Lennart Poettering <lennart at poettering.net>
> > wrote:
> >
> > > The discoverable partition scheme has no concept of /etc/ discovery. It
> > > focusses on three basic setups:
> > >
> > > 1. writable root fs that contains /etc/, /var/ and /usr/ directly.
> > > 2. writable root fs that contains /etc/ and /var/ and gets an
> > >    immutable /usr/ mounted in
> > > 3. immutable root fs that contains /etc/ and /usr/ directly and gets a
> > >    writable /var/ mounted in. (the latter possibly as tmpfs, for truly
> > >    stateless systems)
> >
> > There is also 4. with a writeable root which only contains /etc, an
> > immutable /usr and a temporary /var. Though I guess that can be covered
> > with the existing DPS...?
>
> That's pretty much the same as 2, except that /var is overmounted with
> a tmpfs. i.e. you would simply place /etc/fstab in there, that says
> /var is tmpfs.

Yeah I figured as much, thanks for confirming.

> > My use case is basically 2, /etc has to be writeable to persist the
> > machine-id across reboots, /var also has to be writeable and /usr can be
> > immutable.
> >
> > The problem I am then likely facing is that I create the partitions wrong.
> > I am using mkosi and tried several different repart.d configuration with
> > type=root+type=usr, type=root+type=var+type=use, and different CopyFiles=
> > and Exclude(Target)Files= but none of them seemed to have worked.
>
> if your /var/ is supposed to be a tmpfs, then don't mention it to
> mkosi/repart, just put an /etc/fstab into place that dicates /var is
> mounted as tmpfs.
>
> Other than that you should just be able to use Type=root and Type=usr then.
>
> > Are there special requirements for what the respective partitions must or
> > shall not contain when using several auto-discovered partitions? Or should
> > I ask on the mkosi issue tracker?
>
> If you have just root + usr then this should be a pretty common
> situation for mkosi, it's not special and should just work.
>
> Lennart

Do I have to write the usr/ partition in the fstab then if it is
supposed to be discovered automatically?
When booting the image (without an fstab) I get dropped into the
emergency target as initrd-switch-root failed. It fails because
/etc/os-release is symlinked into usr/ and usr/ is not mounted under
/sysroot/. I have read the bootup man page to maybe find units whose
output might help me troubleshoot this better but apart from affirming
that a sysroot-usr.mount unit did *not* exist I have not been able to
troubleshoot this any further.

My repart.d files are as follows:

# 10-root.conf
[Partition]
Type=root
Format=ext4
SizeMaxBytes=5G
CopyFiles=/etc
CopyFiles=/var
Minimize=guess

# 20-usr.conf
# Format= and Minimize= would be erofs/best once everything is final
[Partition]
Type=usr
Format=ext4
SizeMaxBytes=3G
CopyFiles=/usr:/
Minimize=guess


Nils


More information about the systemd-devel mailing list