'\" t
.TH "MACHINE\-ID" "5" "" "systemd 229" "machine-id"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
machine-id \- Local machine ID configuration file
.SH "SYNOPSIS"
.PP
/etc/machine\-id
.SH "DESCRIPTION"
.PP
The
/etc/machine\-id
file contains the unique machine ID of the local system that is set during installation\&. The machine ID is a single newline\-terminated, hexadecimal, 32\-character, lowercase machine ID string\&. When decoded from hexadecimal, this corresponds with a 16\-byte/128\-bit string\&.
.PP
The machine ID is usually generated from a random source during system installation and stays constant for all subsequent boots\&. Optionally, for stateless systems, it is generated during runtime at early boot if it is found to be empty\&.
.PP
The machine ID does not change based on user configuration or when hardware is replaced\&.
.PP
This machine ID adheres to the same format and logic as the D\-Bus machine ID\&.
.PP
Programs may use this ID to identify the host with a globally unique ID in the network, which does not change even if the local network configuration changes\&. Due to this and its greater length, it is a more useful replacement for the
\fBgethostid\fR(3)
call that POSIX specifies\&.
.PP
The
\fBsystemd-machine-id-setup\fR(1)
tool may be used by installer tools to initialize the machine ID at install time\&. Use
\fBsystemd-firstboot\fR(1)
to initialize it on mounted (but not booted) system images\&.
.PP
The machine\-id may also be set, for example when network booting, by setting the
\fIsystemd\&.machine_id=\fR
kernel command line parameter or passing the option
\fB\-\-machine\-id=\fR
to systemd\&. A machine\-id may not be set to all zeros\&.
.SH "RELATION TO OSF UUIDS"
.PP
Note that the machine ID historically is not an OSF UUID as defined by
\m[blue]\fBRFC 4122\fR\m[]\&\s-2\u[1]\d\s+2, nor a Microsoft GUID; however, starting with systemd v30, newly generated machine IDs do qualify as v4 UUIDs\&.
.PP
In order to maintain compatibility with existing installations, an application requiring a UUID should decode the machine ID, and then apply the following operations to turn it into a valid OSF v4 UUID\&. With
"id"
being an unsigned character array:
.sp
.if n \{\
.RS 4
.\}
.nf
/* Set UUID version to 4 \-\-\- truly random generation */
id[6] = (id[6] & 0x0F) | 0x40;
/* Set the UUID variant to DCE */
id[8] = (id[8] & 0x3F) | 0x80;
.fi
.if n \{\
.RE
.\}
.PP
(This code is inspired by
"generate_random_uuid()"
of
drivers/char/random\&.c
from the Linux kernel sources\&.)
.SH "HISTORY"
.PP
The simple configuration file format of
/etc/machine\-id
originates in the
/var/lib/dbus/machine\-id
file introduced by D\-Bus\&. In fact, this latter file might be a symlink to
/etc/machine\-id\&.
.SH "SEE ALSO"
.PP
\fBsystemd\fR(1),
\fBsystemd-machine-id-setup\fR(1),
\fBgethostid\fR(3),
\fBhostname\fR(5),
\fBmachine-info\fR(5),
\fBos-release\fR(5),
\fBsd-id128\fR(3),
\fBsd_id128_get_machine\fR(3),
\fBsystemd-firstboot\fR(1)
.SH "NOTES"
.IP " 1." 4
RFC 4122
.RS 4
\%https://tools.ietf.org/html/rfc4122
.RE
