summaryrefslogtreecommitdiffstats
path: root/man/hostname.xml
diff options
context:
space:
mode:
Diffstat (limited to 'man/hostname.xml')
-rw-r--r--man/hostname.xml77
1 files changed, 61 insertions, 16 deletions
diff --git a/man/hostname.xml b/man/hostname.xml
index edbeef8f4a..d050703792 100644
--- a/man/hostname.xml
+++ b/man/hostname.xml
@@ -1,6 +1,9 @@
<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY % entities SYSTEM "custom-entities.ent" >
+%entities;
+]>
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="hostname">
@@ -26,23 +29,65 @@
<refsect1>
<title>Description</title>
- <para>The <filename>/etc/hostname</filename> file configures the
- name of the local system that is set during boot using the
- <citerefentry><refentrytitle>sethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
- system call. It should contain a single newline-terminated
- hostname string. Comments (lines starting with a `#') are ignored.
- The hostname may be a free-form string up to 64 characters in length;
- however, it is recommended that it consists only of 7-bit ASCII lower-case
- characters and no spaces or dots, and limits itself to the format allowed
- for DNS domain name labels, even though this is not a strict
- requirement.</para>
+ <para>The <filename>/etc/hostname</filename> file configures the name of the local system. Unless
+ overridden as described in the next section,
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> will set this
+ hostname during boot using the
+ <citerefentry><refentrytitle>sethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry> system
+ call.</para>
+
+ <para>The file should contain a single newline-terminated hostname string. Comments (lines starting with
+ a <literal>#</literal>) are ignored. The hostname should be composed of up to 64 7-bit ASCII lower-case
+ alphanumeric characters or hyphens forming a valid DNS domain name. It is recommended that this name
+ contains only a single label, i.e. without any dots. Invalid characters will be filtered out in an
+ attempt to make the name valid, but obviously it is recommended to use a valid name and not rely on this
+ filtering.</para>
<para>You may use
- <citerefentry><refentrytitle>hostnamectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- to change the value of this file during runtime from the command
- line. Use
- <citerefentry><refentrytitle>systemd-firstboot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- to initialize it on mounted (but not booted) system images.</para>
+ <citerefentry><refentrytitle>hostnamectl</refentrytitle><manvolnum>1</manvolnum></citerefentry> to change
+ the value of this file during runtime from the command line. Use
+ <citerefentry><refentrytitle>systemd-firstboot</refentrytitle><manvolnum>1</manvolnum></citerefentry> to
+ initialize it on mounted (but not booted) system images.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Hostname semantics</title>
+
+ <para><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> and the
+ associated tools will obtain the hostname in the following ways:</para>
+ <itemizedlist>
+ <listitem><para>If the kernel commandline parameter <varname>systemd.hostname=</varname> specifies a
+ valid hostname,
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> will use it
+ to set the hostname during early boot, see
+ <citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+ </para></listitem>
+
+ <listitem><para>Otherwise, the "static" hostname specified by <filename>/etc/hostname</filename> as
+ described above will be used.</para></listitem>
+
+ <listitem><para>Otherwise, a transient hostname may be set during runtime, for example based on
+ information in a DHCP lease, see
+ <citerefentry><refentrytitle>systemd-hostnamed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
+ Both <ulink url="https://developer.gnome.org/NetworkManager/stable/">NetworkManager</ulink> and
+ <citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ allow this. Note that
+ <citerefentry><refentrytitle>systemd-hostnamed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ gives higher priority to the static hostname, so the transient hostname will only be used if the static
+ hostname is not configured.</para></listitem>
+
+ <listitem><para>Otherwise, a fallback hostname configured at compilation time will be used
+ (<literal>&FALLBACK_HOSTNAME;</literal>).</para></listitem>
+
+ <!-- what about the "linux" fallback fallback? -->
+ </itemizedlist>
+
+ <para>Effectively, the static hostname has higher priority than a transient hostname, which has higher
+ priority than the fallback hostname. Transient hostnames are equivalent, so setting a new transient
+ hostname causes the previous transient hostname to be forgotten. The hostname specified on the kernel
+ command line is like a transient hostname, with the exception that it has higher priority when the
+ machine boots. Also note that those are the semantics implemented by systemd tools, but other programs
+ may also set the hostname.</para>
</refsect1>
<refsect1>