diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml index 8ece65eacc..bb53cc7069 100644 --- a/man/systemd-machine-id-setup.xml +++ b/man/systemd-machine-id-setup.xml @@ -43,24 +43,31 @@ ID will be acquired in the following fashion: - If a valid D-Bus machine ID is already - configured for the system, the D-Bus machine ID is copied and - used to initialize the machine ID in - /etc/machine-id. + If a valid machine ID is stored in /run/machine-id, the machine ID + is copied and used to initialize the machine ID in /etc/machine-id. This step is + skipped if is specified or running in a chroot environment. - If run inside a KVM virtual machine and a UUID - is configured (via the - option), this UUID is used to initialize the machine ID. The - caller must ensure that the UUID passed is sufficiently unique - and is different for every booted instance of the - VM. + If a valid D-Bus machine ID is already configured for the system, the D-Bus machine ID + is copied and used to initialize the machine ID in /etc/machine-id. + + + If a valid machine ID is provided through credential, + the machine ID is copied and used to initialize the machine ID in /etc/machine-id. + This step is skipped if is specified or running in a chroot environment. + + + If run inside a KVM virtual machine and a UUID is configured (via the + option), this UUID is used to initialize the machine ID. The caller must ensure + that the UUID passed is sufficiently unique and is different for every booted instance of the VM. This + step is skipped if is specified or running in a chroot environment. + Similarly, if run inside a Linux container environment and a UUID is configured for the container, this is used to initialize the machine ID. For details, see the documentation of the Container Interface. + url="https://systemd.io/CONTAINER_INTERFACE">Container Interface. This step is skipped if + is specified or running in a chroot environment. - Otherwise, a new ID is randomly - generated. + Otherwise, a new ID is randomly generated. The switch may be used to commit a diff --git a/src/shared/machine-id-setup.c b/src/shared/machine-id-setup.c index 48ee2dd306..1a63794756 100644 --- a/src/shared/machine-id-setup.c +++ b/src/shared/machine-id-setup.c @@ -55,9 +55,9 @@ static int acquire_machine_id(const char *root, sd_id128_t *ret) { assert(ret); /* First, try reading the machine ID from /run/machine-id, which may not be mounted on - * /etc/machine-id yet. This is important on switching root, Otherwise, machine ID may be changed - * after the transition. */ - if (empty_or_root(root) && running_in_chroot() <= 0 && + * /etc/machine-id yet. This is important on switching root especially on soft-reboot, Otherwise, + * machine ID may be changed after the transition. */ + if (isempty(root) && running_in_chroot() <= 0 && id128_read("/run/machine-id", ID128_FORMAT_PLAIN, ret) >= 0) { log_info("Reusing machine ID stored in /run/machine-id."); return 1; /* Indicate that the machine ID is reused. */ @@ -70,7 +70,7 @@ static int acquire_machine_id(const char *root, sd_id128_t *ret) { return 0; } - if (empty_or_root(root) && running_in_chroot() <= 0) { + if (isempty(root) && running_in_chroot() <= 0) { /* Let's use a system credential for the machine ID if we can */ if (acquire_machine_id_from_credential(ret) >= 0) return 0;