On Tue, 13 Aug 2019 at 22:01:34 -0400, Theodore Y. Ts'o wrote: > That's just a matter of having sysvinit (and other non-systemd init > systems) have an init script which runs as soon as the root file > system is remounted read/write to initialize /etc/machine-id if it > doesn't exist or if it is a zero-length file, right?
Yes ish, although it isn't *necessarily* an init system responsibility. Somehow describing which containers and chroots should have a machine ID, which ones should share the host's machine ID and which ones don't need either is a gap in my proposal. init is no longer Essential, so Debian chroots and containers will often have neither systemd nor sysvinit (or any of the other alternatives), but perhaps they should have a machine-id anyway - or perhaps container managers that don't run a full init system, like schroot, should be responsible for that? Or perhaps this requirement isn't necessary for containers that don't provide either system services or user logins? (The elephant in the room here is that Docker doesn't arrange to have a machine-id, and also doesn't set the $container_uuid proposed in <https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface/>.) systemd-nspawn already sets up a machine ID for its containers, and lxc (presumably also lxd) normally runs init, but schroot and Docker don't normally run init and also don't take any particular steps to have a machine ID. Flatpak copies the machine ID from the host system into its containers, and I would assume that other frameworks with "app containers" that are conceptually part of the host machine rather than their own machine, like Snap and AppImage, probably do the same. An implementation of this should copy the dbus machine ID if it exists (if the dbus machine ID differs from machine-id(5) then for historical reasons various libraries will disagree on which is more important) and the other subtleties described in systemd-machine-id-setup(1) are probably also a good idea. On Linux systems dbus-uuidgen is not required, because `tr -d - < /proc/sys/kernel/random/uuid` is suitable. I'm sure kFreeBSD and Hurd have an equivalent, but I don't know what it is. smcv