'\" t
.\" Title: nvme-gen-hostnqn
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 10/30/2026
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
.TH "NVME\-GEN\-HOSTNQN" "1" "10/30/2026" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * 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"
nvme-gen-hostnqn \- Generate a host NVMe Qualified Name
.SH "SYNOPSIS"
.sp
.nf
\fInvme\fR [] \fIgen\-hostnqn\fR
.fi
.SH "DESCRIPTION"
.sp
Generate a host NQN in the form: nqn\&.2014\-08\&.org\&.nvmexpress:uuid:1b4e28ba\-2fa1\-11d2\-883f\-0016d3cca427 and print it to stdout\&.
.sp
The UUID is taken from the first of these sources that provides a usable value:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 1." 4.2
.\}
The system UUID reported by DMI, from /sys/class/dmi/id/product_uuid or /sys/firmware/dmi/entries\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 2." 4.2
.\}
The firmware device tree, from /proc/device\-tree/ibm,partition\-uuid\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 3." 4.2
.\}
The local machine ID, /etc/machine\-id\&. The machine ID itself is never published: the UUID is derived from it with HMAC\-SHA256 and a fixed application identifier, as systemd\(cqs sd_id128_get_machine_app_specific(3) does\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 4." 4.2
.\}
A random UUID, if none of the above is available\&. This value is not stable across invocations, and a warning is printed\&.
.RE
.sp
The first two sources describe the hardware and survive a reinstall\&. The machine ID describes the installation and does not\&. A UUID that is all zeros or all ones is a placeholder reported by some virtual machines and firmware, and is skipped\&.
.sp
This command must be run as root\&. The DMI and device tree files are readable by root only, so an unprivileged run cannot reach the stable sources, and its output cannot be written to /etc/nvme/hostnqn either\&.
.SH "OPTIONS"
.SH "GLOBAL OPTIONS"
.sp
The following options are defined at the top\-level nvme command and are available to this subcommand:
.PP
\-\-dry\-run
.RS 4
Print the command that would be executed, but do not actually execute it\&.
.RE
.PP
\-\-no\-ioctl\-probing
.RS 4
Disable probing for 64\-bit IOCTL support\&.
.RE
.PP
\-\-no\-retries
.RS 4
Disable retry logic on transient errors\&.
.RE
.PP
\-o , \-\-output\-format=
.RS 4
Set the reporting format to
\fInormal\fR,
\fItabular, \*(Aqjson\fR, or
\fIbinary\fR\&. Only one output format may be used at a time\&.
.RE
.PP
\-\-output\-format\-version=
.RS 4
Select the output format version\&. Version
\fI1\fR
uses the original field naming, while version
\fI2\fR
(default) provides more consistent and script\-friendly field names\&. Other versions are rejected\&.
.RE
.PP
\-\-quiet
.RS 4
Suppress informational messages\&. Errors are still reported, and \-\-quiet cancels any \-\-verbose for the library log level\&.
.RE
.PP
\-\-set\-options=[,\&...]
.RS 4
Set libnvme library options for this invocation\&. Supported keys are
\fIforce\-4k\fR,
\fImi\-probe\-enabled\fR,
\fItest\-base\-dir\fR
and
\fItest\-sysfs\-dir\fR\&.
.RE
.PP
\-\-timeout=
.RS 4
Set the timeout for the command in milliseconds\&.
\fIinfinite\fR
or
\fI\-1\fR
waits without a time limit (0xffffffff)\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the level of detail in the output\&. May be specified multiple times to further increase verbosity\&.
.RE
.sp
These options can also be set as machine\-wide defaults in nvme\-cli\&.conf(5)\&. A command\-line flag always overrides the file\&.
.SH "EXAMPLES"
.sp
nvme gen\-hostnqn
.SH "NVME"
.sp
Part of the nvme\-user suite