Machine IDs are stored in several places, some of which are not even files.
* http://jdebp.uk./Softwares/nosh/guide/commands/machine-id.xm...
They can be resurrected if not all storage locations are dealt with. Moreover, some systems use things like the SMBIOS product UUID.
* http://jdebp.uk./Softwares/nosh/guide/commands/setup-machine...
The correct approach is not deleting files.
* http://jdebp.uk./Softwares/nosh/guide/commands/erase-machine...
* https://lists.debian.org/debian-user/2019/03/msg00550.html
So at boot, one would run "erase-machine-id". Then create a random 30-character hexadecimal number. And then either set "the systemd.machine_id= kernel command line parameter" to it. Or pass it via "the option --machine-id= to systemd".
% system-control cat machine-id
start:#!/bin/nosh
start:true
stop:#!/bin/nosh
stop:envdir env
stop:erase-machine-id
run:#!/bin/nosh
run:#Set up and tear down the machine ID
run:envdir env
run:setup-machine-id
restart:#!/bin/sh
restart:exec false # ignore script arguments
%So "setup-machine-id". Does that generate a value that's unrelated to any preexisting versions, analogs, etc?
I ask because, when I deleted /etc/machine-id and ran "systemd-machine-id-setup", it generated a new machine-id by copying the D-Bus machine ID.
Edit: OK, so I created a Debian VM, noted /etc/machine-id, deleted it, and rebooted. And found that it was still missing.
Running systemd-machine-id-setup generated a new machine-id from the D-Bus machine ID. And it was the same as the initial one.
But I also see in man machine-id:
> The machine-id may also be set, for example when network booting, by setting the systemd.machine_id= kernel command line parameter or passing the option --machine-id= to systemd. A machine-id may not be set to all zeros.
dd if=/dev/urandom bs=1 count=16 | hexdump
Give you something that you can use?
38d05397c25548b4f4bda7751b5062
... and ... $ FOO=`cat /dev/urandom | tr -dc a-z0-9 | head -c${1:-30}`
$ echo $FOO
6we4gvnmx00w208ffty6i11m82rw6d
But I have no clue whether systemd would be happy with that. Maybe later I can test more.Edit: Oops. Make that ...
$ FOO=`cat /dev/urandom | tr -dc abcdef0-9 | head -c${1:-30}`
$ echo $FOO
b486935dbb9e9fe603328a19e2b5b4Something like:
$ pwgen -1s 31
qHfKU46H2RA2WUr0EZ1zBHfIBLKZKuT