#!/usr/bin/env bash set -e set -x function setup_root { local _root="$1" mkdir -p "$_root" mount -t tmpfs tmpfs "$_root" mkdir -p "$_root/etc" "$_root/run" } function check { printf "Expected\n" cat "$1" printf "\nGot\n" cat "$2" cmp "$1" "$2" } r="$(pwd)/overwrite-broken-machine-id" setup_root "$r" systemd-machine-id-setup --print --root "$r" echo abc >>"$r/etc/machine-id" id=$(systemd-machine-id-setup --print --root "$r") echo $id >expected check expected "$r/etc/machine-id" r="$(pwd)/transient-machine-id" setup_root "$r" systemd-machine-id-setup --print --root "$r" echo abc >>"$r/etc/machine-id" mount -o remount,ro "$r" mount -t tmpfs tmpfs "$r/run" transient_id=$(systemd-machine-id-setup --print --root "$r") mount -o remount,rw "$r" commited_id=$(systemd-machine-id-setup --print --commit --root "$r") [[ "$transient_id" = "$commited_id" ]] check "$r/etc/machine-id" "$r/run/machine-id"