2014-08-24 18:18:18 +01:00
<section xmlns= "http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0"
xml:id="sec-luks-file-systems">
2018-05-02 00:57:09 +01:00
<title > LUKS-Encrypted File Systems</title>
2014-08-24 18:18:18 +01:00
2018-05-02 00:57:09 +01:00
<para >
2019-09-18 21:13:35 +01:00
NixOS supports file systems that are encrypted using <emphasis > LUKS</emphasis> (Linux Unified Key Setup). For example, here is how you create an encrypted Ext4 file system on the device <filename > /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d</filename> :
2014-08-24 18:18:18 +01:00
<screen >
2016-06-01 15:23:32 +01:00
# cryptsetup luksFormat /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d
2014-08-24 18:18:18 +01:00
WARNING!
========
2016-05-25 12:23:32 +01:00
This will overwrite data on /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d irrevocably.
2014-08-24 18:18:18 +01:00
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: ***
Verify passphrase: ***
2016-06-01 15:23:32 +01:00
# cryptsetup luksOpen /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d crypted
2016-05-25 12:23:32 +01:00
Enter passphrase for /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d: ***
2014-08-24 18:18:18 +01:00
2016-06-01 15:23:32 +01:00
# mkfs.ext4 /dev/mapper/crypted
2014-08-24 18:18:18 +01:00
</screen>
2019-09-18 21:13:35 +01:00
To ensure that this file system is automatically mounted at boot time as <filename > /</filename> , add the following to <filename > configuration.nix</filename> :
2014-08-24 18:18:18 +01:00
<programlisting >
2018-04-05 09:43:56 +01:00
<link linkend= "opt-boot.initrd.luks.devices._name__.device" > boot.initrd.luks.devices.crypted.device</link> = "/dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d";
<xref linkend= "opt-fileSystems" /> ."/".device = "/dev/mapper/crypted";
2014-08-24 18:18:18 +01:00
</programlisting>
2019-09-18 21:13:35 +01:00
Should grub be used as bootloader, and <filename > /boot</filename> is located on an encrypted partition, it is necessary to add the following grub option:
2018-04-05 09:43:56 +01:00
<programlisting > <xref linkend= "opt-boot.loader.grub.enableCryptodisk" /> = true;</programlisting>
2018-05-02 00:57:09 +01:00
</para>
2014-08-24 18:18:18 +01:00
</section>