On Wed, 26 Feb 2020 at 09:59, Andreas Kempe <andreas.kempe@xxxxxxxx> wrote: > > Hello everyone, > > I'm working in a project with an embedded Linux system based on > Openembedded using Systemd version 241 as our init process. We're > using a read-only /etc. To facilitate development, we want to use a > writeable overlay on /etc, but we ran into an issue. > > When we start, Systemd detects that there is no machine-id file > present in /etc so it generates and mounts a /etc/machine-id. When our > mount unit then applies the overlay on /etc, it hides the mounted > file. Journald later fails to start because /etc/machine-id isn't > visible through the overlay. > I would expect the /etc/machine-id to exist, and be an empty file on the RO underlay, then systemd should setup machine-id in /run, and then after the overlay of /etc is setup to use and is RW, fire the systemd-machine-id-commit.service unit which will transfer the machine-id from /run into the RW /etc overlay, after that everything else should operate "normal". We do this in Ubuntu live installer images, which use overlayfs across all of / on top of read-only squashfs rootfs. > At this point we're considering a number of workarounds, but I thought > it worthwhile asking the experts before we go patching Systemd or > similar. I think didrocks or pitti introduced above for all the cases we had in ubuntu where we have RO rootfs with a writable overlay which "appears" later. No idea if above is suitable for you at all, and/or need tweaking. I.e. self-transfer machine-id from /run to /etc with like adding wants=/before= systemd-machine-id-commit.service or some such? -- Regards, Dimitri. _______________________________________________ systemd-devel mailing list systemd-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/systemd-devel