<?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">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-fstab-generator">

  <refentryinfo>
    <title>systemd-fstab-generator</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd-fstab-generator</refentrytitle>
    <manvolnum>8</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd-fstab-generator</refname>
    <refpurpose>Unit generator for /etc/fstab</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>/usr/lib/systemd/system-generators/systemd-fstab-generator</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><filename>systemd-fstab-generator</filename> is a generator
    that translates <filename>/etc/fstab</filename> (see
    <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    for details) into native systemd units early at boot and when
    configuration of the system manager is reloaded. This will
    instantiate mount and swap units as necessary.</para>

    <para>The <varname>passno</varname> field is treated like a simple
    boolean, and the ordering information is discarded. However, if
    the root file system is checked, it is checked before all the
    other file systems.</para>

    <para>See
    <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    and
    <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    for more information about special <filename>/etc/fstab</filename>
    mount options this generator understands.</para>

    <para>One special topic is handling of symbolic links. Historical init
    implementations supported symlinks in <filename>/etc/fstab</filename>.
    Because mount units will refuse mounts where the target is a symbolic link,
    this generator will resolve any symlinks as far as possible when processing
    <filename>/etc/fstab</filename> in order to enhance backwards compatibility.
    If a symlink target does not exist at the time that this generator runs, it
    is assumed that the symlink target is the final target of the mount.</para>

    <para><filename>systemd-fstab-generator</filename> implements
    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
  </refsect1>

  <refsect1>
    <title>Kernel Command Line</title>

    <para><filename>systemd-fstab-generator</filename> understands the
    following kernel command line parameters:</para>

    <variablelist class='kernel-commandline-options'>

      <varlistentry>
        <term><varname>fstab=</varname></term>
        <term><varname>rd.fstab=</varname></term>

        <listitem><para>Takes a boolean argument. Defaults to <literal>yes</literal>. If
        <literal>no</literal>, causes the generator to ignore any mounts or swap devices configured in
        <filename>/etc/fstab</filename>. <varname>rd.fstab=</varname> is honored only in the initrd, while
        <varname>fstab=</varname> is honored by both the main system and the initrd.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>root=</varname></term>

        <listitem><para>Configures the operating system's root filesystem to mount when running in the
        initrd. This accepts a device node path (usually <filename>/dev/disk/by-uuid/…</filename> or
        <filename>/dev/disk/by-label/…</filename> or similar), or the special values <literal>gpt-auto</literal>
        and <literal>tmpfs</literal>.</para>

        <para>Use <literal>gpt-auto</literal> to explicitly request automatic root file system discovery via
        <citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>

        <para>Use <literal>tmpfs</literal> in order to mount a <citerefentry
        project='man-pages'><refentrytitle>tmpfs</refentrytitle><manvolnum>5</manvolnum></citerefentry> file
        system as root file system of the OS. This is useful in combination with
        <varname>mount.usr=</varname> (see below) in order to combine a volatile root file system with a
        separate, immutable <filename>/usr/</filename> file system. Also see
        <varname>systemd.volatile=</varname> below.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>rootfstype=</varname></term>

        <listitem><para>Takes the root filesystem type that will be
        passed to the mount command. <varname>rootfstype=</varname> is
        honored by the initrd.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>rootflags=</varname></term>

        <listitem><para>Takes the root filesystem mount options to use. <varname>rootflags=</varname> is
        honored by the initrd.</para>

        <para>Note that unlike most kernel command line options this setting does not override settings made
        in configuration files (specifically: the mount option string in
        <filename>/etc/fstab</filename>). See
        <citerefentry><refentrytitle>systemd-remount-fs.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>mount.usr=</varname></term>

        <listitem><para>Takes the <filename>/usr/</filename> filesystem
        to be mounted by the initrd. If
        <varname>mount.usrfstype=</varname> or
        <varname>mount.usrflags=</varname> is set, then
        <varname>mount.usr=</varname> will default to the value set in
        <varname>root=</varname>.</para>

        <para>Otherwise, this parameter defaults to the
        <filename>/usr/</filename> entry found in
        <filename>/etc/fstab</filename> on the root filesystem.</para>

        <para><varname>mount.usr=</varname> is honored by the initrd.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>mount.usrfstype=</varname></term>

        <listitem><para>Takes the <filename>/usr/</filename> filesystem
        type that will be passed to the mount command. If
        <varname>mount.usr=</varname> or
        <varname>mount.usrflags=</varname> is set, then
        <varname>mount.usrfstype=</varname> will default to the value
        set in <varname>rootfstype=</varname>.</para>

        <para>Otherwise, this value will be read from the
        <filename>/usr/</filename> entry in
        <filename>/etc/fstab</filename> on the root filesystem.</para>

        <para><varname>mount.usrfstype=</varname> is honored by the
        initrd.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>mount.usrflags=</varname></term>

        <listitem><para>Takes the <filename>/usr/</filename> filesystem
        mount options to use. If <varname>mount.usr=</varname> or
        <varname>mount.usrfstype=</varname> is set, then
        <varname>mount.usrflags=</varname> will default to the value
        set in <varname>rootflags=</varname>.</para>

        <para>Otherwise, this value will be read from the
        <filename>/usr/</filename> entry in
        <filename>/etc/fstab</filename> on the root filesystem.</para>

        <para><varname>mount.usrflags=</varname> is honored by the
        initrd.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>roothash=</varname></term>
        <term><varname>usrhash=</varname></term>

        <listitem><para>These options are primarily read by
        <citerefentry><refentrytitle>systemd-veritysetup-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>. When
        set this indicates that the root file system (or <filename>/usr/</filename>) shall be mounted from
        Verity volumes with the specified hashes. If these kernel command line options are set the root (or
        <filename>/usr/</filename>) file system is thus mounted from a device mapper volume
        <filename>/dev/mapper/root</filename> (or <filename>/dev/mapper/usr</filename>).</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.volatile=</varname></term>

        <listitem><para>Controls whether the system shall boot up in volatile mode. Takes a boolean argument or the
        special value <option>state</option>.</para>

        <para>If false (the default), this generator makes no changes to the mount tree and the system is booted up in
        normal mode.</para>

        <para>If true the generator ensures
        <citerefentry><refentrytitle>systemd-volatile-root.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
        is run in the initrd. This service changes the mount table before transitioning to the host system,
        so that a volatile memory file system (<literal>tmpfs</literal>) is used as root directory, with only
        <filename>/usr/</filename> mounted into it from the configured root file system, in read-only mode.
        This way the system operates in fully stateless mode, with all configuration and state reset at boot
        and lost at shutdown, as <filename>/etc/</filename> and <filename>/var/</filename> will be served
        from the (initially unpopulated) volatile memory file system.</para>

        <para>If set to <option>state</option> the generator will leave the root directory mount point unaltered,
        however will mount a <literal>tmpfs</literal> file system to <filename>/var/</filename>. In this mode the normal
        system configuration (i.e. the contents of <literal>/etc/</literal>) is in effect (and may be modified during
        system runtime), however the system state (i.e. the contents of <literal>/var/</literal>) is reset at boot and
        lost at shutdown.</para>

        <para>If this setting is set to <literal>overlay</literal> the root file system is set up as
        <literal>overlayfs</literal> mount combining the read-only root directory with a writable
        <literal>tmpfs</literal>, so that no modifications are made to disk, but the file system may be modified
        nonetheless with all changes being lost at reboot.</para>

        <para>Note that in none of these modes the root directory, <filename>/etc/</filename>, <filename>/var/</filename>
        or any other resources stored in the root file system are physically removed. It's thus safe to boot a system
        that is normally operated in non-volatile mode temporarily into volatile mode, without losing data.</para>

        <para>Note that with the exception of <literal>overlay</literal> mode, enabling this setting will
        only work correctly on operating systems that can boot up with only <filename>/usr/</filename>
        mounted, and are able to automatically populate <filename>/etc/</filename>, and also
        <filename>/var/</filename> in case of <literal>systemd.volatile=yes</literal>.</para>

        <para>Also see <varname>root=tmpfs</varname> above, for a method to combine a
        <literal>tmpfs</literal> file system with a regular <filename>/usr/</filename> file system (as
        configured via <varname>mount.usr=</varname>). The main distinction between
        <varname>systemd.volatile=yes</varname>, and <varname>root=tmpfs</varname> in combination
        <varname>mount.usr=</varname> is that the former operates on top of a regular root file system and
        temporarily obstructs the files and directories above its <filename>/usr/</filename> subdirectory,
        while the latter does not hide any files, but simply mounts a unpopulated tmpfs as root file system
        and combines it with a user picked <filename>/usr/</filename> file system.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.swap</varname></term>

        <listitem><para>Takes a boolean argument or enables the option if specified
        without an argument. If disabled, causes the generator to ignore
        any swap devices configured in <filename>/etc/fstab</filename>.
        Defaults to enabled.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-cryptsetup-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
      <ulink url="https://systemd.io/ENVIRONMENT/">Known Environment Variables</ulink>
    </para>
  </refsect1>
</refentry>
