56 lines
2.6 KiB
XML
56 lines
2.6 KiB
XML
|
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="ch-file-systems">
|
|||
|
<title>File Systems</title>
|
|||
|
<para>
|
|||
|
You can define file systems using the <literal>fileSystems</literal>
|
|||
|
configuration option. For instance, the following definition causes
|
|||
|
NixOS to mount the Ext4 file system on device
|
|||
|
<literal>/dev/disk/by-label/data</literal> onto the mount point
|
|||
|
<literal>/data</literal>:
|
|||
|
</para>
|
|||
|
<programlisting language="bash">
|
|||
|
fileSystems."/data" =
|
|||
|
{ device = "/dev/disk/by-label/data";
|
|||
|
fsType = "ext4";
|
|||
|
};
|
|||
|
</programlisting>
|
|||
|
<para>
|
|||
|
This will create an entry in <literal>/etc/fstab</literal>, which
|
|||
|
will generate a corresponding
|
|||
|
<link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.mount.html">systemd.mount</link>
|
|||
|
unit via
|
|||
|
<link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html">systemd-fstab-generator</link>.
|
|||
|
The filesystem will be mounted automatically unless
|
|||
|
<literal>"noauto"</literal> is present in
|
|||
|
<link linkend="opt-fileSystems._name_.options">options</link>.
|
|||
|
<literal>"noauto"</literal> filesystems can be mounted
|
|||
|
explicitly using <literal>systemctl</literal> e.g.
|
|||
|
<literal>systemctl start data.mount</literal>. Mount points are
|
|||
|
created automatically if they don’t already exist. For
|
|||
|
<literal>device</literal>, it’s best to use the topology-independent
|
|||
|
device aliases in <literal>/dev/disk/by-label</literal> and
|
|||
|
<literal>/dev/disk/by-uuid</literal>, as these don’t change if the
|
|||
|
topology changes (e.g. if a disk is moved to another IDE
|
|||
|
controller).
|
|||
|
</para>
|
|||
|
<para>
|
|||
|
You can usually omit the file system type
|
|||
|
(<literal>fsType</literal>), since <literal>mount</literal> can
|
|||
|
usually detect the type and load the necessary kernel module
|
|||
|
automatically. However, if the file system is needed at early boot
|
|||
|
(in the initial ramdisk) and is not <literal>ext2</literal>,
|
|||
|
<literal>ext3</literal> or <literal>ext4</literal>, then it’s best
|
|||
|
to specify <literal>fsType</literal> to ensure that the kernel
|
|||
|
module is available.
|
|||
|
</para>
|
|||
|
<note>
|
|||
|
<para>
|
|||
|
System startup will fail if any of the filesystems fails to mount,
|
|||
|
dropping you to the emergency shell. You can make a mount
|
|||
|
asynchronous and non-critical by adding
|
|||
|
<literal>options = [ "nofail" ];</literal>.
|
|||
|
</para>
|
|||
|
</note>
|
|||
|
<xi:include href="luks-file-systems.section.xml" />
|
|||
|
<xi:include href="sshfs-file-systems.section.xml" />
|
|||
|
</chapter>
|