On Tuesday 29 March 2016 12:14:21 Richard W.M. Jones wrote:
Currently when the appliance is booted we see warning messages like
these ones:
[/usr/lib/tmpfiles.d/systemd.conf:26] Failed to replace specifiers: /run/log/journal/%m
[/usr/lib/tmpfiles.d/systemd.conf:28] Failed to replace specifiers: /run/log/journal/%m
[/usr/lib/tmpfiles.d/systemd.conf:29] Failed to replace specifiers: /run/log/journal/%m
They are apparently harmless, but are caused because /etc/machine-id
does not exist inside the appliance, and so %m cannot be substituted
by systemd-tmpfiles.
The solution to this is to provide /etc/machine-id. However this is
not so simple: either we could get supermin to generate this,
requiring an ugly systemd-specific hack to supermin, or we could
generate it in the /init script, which just slows the init script down
for no real reason.
Since the content of /etc/machine-id doesn't really matter for a
throwaway appliance so long as it has the right format, this commit
copies the host file into the appliance.
---
I had a prototype since some months of the solution about generating it
in /init:
diff --git a/appliance/init b/appliance/init
index 28054ab..20c8d24 100755
--- a/appliance/init
+++ b/appliance/init
@@ -85,6 +85,9 @@ fi
mkdir -p /run/tmpfiles.d
kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf
+# Create a machine-id with a random UUID
+dd if=/dev/urandom bs=1 count=16 status=none | od -x -A n | sed -e 's, ,,g' >
/etc/machine-id
+
# Set up tmpfiles (must run after kmod.conf is created above).
systemd-tmpfiles --prefix=/dev --create --boot
Considering that, since a week or so, virtio-rng is used for the
/dev/urandom of the appliance, reading 16 bytes should not cause to
wait for randomness.
--
Pino Toscano