Hi Michael,

On Friday, November 27, 2020 09:38 CET, Michael Olbrich 
<m.olbr...@pengutronix.de> wrote: 
 
> On Wed, Nov 25, 2020 at 05:56:49PM +0100, Artur Wiebe wrote:
> > If not set only an empty /etc/machine-id will be installed.
> > 
> > Signed-off-by: Artur Wiebe <ar...@4wiebe.de>
> > ---
> >  rules/machine-id.in       | 22 ++++++++++++++++++----
> >  rules/machine-id.make     |  4 ++++
> >  rules/machine-id.postinst |  5 +++--
> >  3 files changed, 25 insertions(+), 6 deletions(-)
> > 
> > diff --git a/rules/machine-id.in b/rules/machine-id.in
> > index f18fec554..2a3901f41 100644
> > --- a/rules/machine-id.in
> > +++ b/rules/machine-id.in
> > @@ -1,11 +1,25 @@
> >  ## SECTION=initmethod
> >  
> > -config MACHINE_ID
> > +menuconfig MACHINE_ID
> >     tristate
> >     prompt "create /etc/machine-id"
> > -   select RC_ONCE                  if RUNTIME
> > -   select UTIL_LINUX_NG            if !INITMETHOD_SYSTEMD
> > -   select UTIL_LINUX_NG_UUIDGEN    if !INITMETHOD_SYSTEMD
> > +   select RC_ONCE                  if MACHINE_ID_RC_ONCE && RUNTIME
> > +   select UTIL_LINUX_NG            if MACHINE_ID_RC_ONCE && 
> > !INITMETHOD_SYSTEMD
> > +   select UTIL_LINUX_NG_UUIDGEN    if MACHINE_ID_RC_ONCE && 
> > !INITMETHOD_SYSTEMD
> >     help
> >       Enable this to make sure there is always a unique /etc/machine-id
> >       available in the system.
> > +
> > +if MACHINE_ID
> > +
> > +config MACHINE_ID_RC_ONCE
> > +   bool "generate (bbinit) or save (systemd) machine-id using rc-once at 
> > first boot"
> > +   default y
> 
> Hmmm, maybe should have no prompt and 'depends on RC_ONCE' (instead of
> selecting it above). I don't think there is a use-case for not persisting
> the machine-id if rc-once is available.
> 
> This is different from the ssh server key case: There are other ways to
> create the keys.

Why should one select rc-once, if it is not needed by any other package? Maybe 
make it even invisible?

In my projects I use an initramfs where I mount an overlayfs over /etc. When 
systemd starts /etc/mancine-id is writable while / is never mounted rw.
So I want just to install an empty /etc/machine-id and let systemd generate and 
write the new one. rc-once just jeopardize this.

> 
> > +   help
> > +     If not set only an empty /etc/machine-id will be installed.
> > +     Systemd:
> > +     If /etc/machine-id exists and is empty, systemd will bind-mount
> > +     a file containing the new machine-id over it and later try 
> > +     to commit it to disk (if /etc/ is writable).
> > +
> > +endif
> > diff --git a/rules/machine-id.make b/rules/machine-id.make
> > index 3883d64cb..e1cbdcc42 100644
> > --- a/rules/machine-id.make
> > +++ b/rules/machine-id.make
> > @@ -27,7 +27,11 @@ $(STATEDIR)/machine-id.targetinstall:
> >     @$(call install_fixup,machine-id,AUTHOR,"Michael Olbrich 
> > <m.olbr...@pengutronix.de>")
> >     @$(call install_fixup,machine-id,DESCRIPTION,missing)
> >  
> > +   @$(call install_copy, machine-id, 0, 0, 0644, /dev/null, 
> > /etc/machine-id)
> 
> Maybe install_alternative and an empty on in projectroot/. Sometimes it's
> better to share the same machine-id across devices than having a new one
> after rebooting.

Good idea. I'll change this.
> 
> Also, this should only happen for !PTXCONF_MACHINE_ID_RC_ONCE. It's not a
> good idea to modify files that are installed by a package.

This is the case for almost all files in /etc if they are modified on the 
target. I avoid it with the overlayfs. In this way defaults are installed by 
the packages and changes are stored on the target.
> 
> > +
> > +ifdef MACHINE_ID_RC_ONCE
> 
> ifdef PTXCONF_MACHINE_ID_RC_ONCE
> 
> >     @$(call install_alternative, machine-id, 0, 0, 0755, 
> > /etc/rc.once.d/machine-id)
> > +endif
> >  
> >     @$(call install_finish,machine-id)
> >  
> > diff --git a/rules/machine-id.postinst b/rules/machine-id.postinst
> > index 2060129d1..f1648226b 100644
> > --- a/rules/machine-id.postinst
> > +++ b/rules/machine-id.postinst
> > @@ -1,3 +1,4 @@
> >  #!/bin/sh
> > -touch "$DESTDIR/etc/machine-id"
> 
> So this is still needed inside the 'if'.

I moved it into the package because otherwise an empty package is not generated.
ERROR: no files installed

With this patch machine-id would be reset on reinstall, but why should someone 
reinstall the machine-id package?

Artur
> 
> Michael
> 
> > -$DESTDIR/usr/sbin/enable-rc-once machine-id
> > +if [ -f $DESTDIR/etc/rc.once.d/machine-id ]; then
> > +   $DESTDIR/usr/sbin/enable-rc-once machine-id
> > +fi
> > -- 
> > 2.29.2
> > 
> > 
> > _______________________________________________
> > ptxdist mailing list
> > ptxdist@pengutronix.de
> > To unsubscribe, send a mail with subject "unsubscribe" to 
> > ptxdist-requ...@pengutronix.de
> > 
> 
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
> To unsubscribe, send a mail with subject "unsubscribe" to 
> ptxdist-requ...@pengutronix.de


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to 
ptxdist-requ...@pengutronix.de

Reply via email to