Encrypting your Linux system with LUKS and ZFS

Universal Kernel to Start

At the first attempt, a kernel with many features is recommended to ensure an operational system. (Having a generic kernel is also worthwhile to be able to boot with other hardware in case of defects.) If the first tests of your future production system are positive, you can remove unused drivers from the kernel.

The code shown in this article was created on a virtual machine. To make it as versatile as possible, lines 8 to 10 (Listing 4) use the kernel config from the Live DVD.

Now it's time to configure the kernel (e.g., with make menuconfig). Here it is important to enable SPL and ZFS (Figure 1).

Figure 1: In the kernel configuration, the admin needs to enable SPL and ZFS.

Compiling and linking can take some time. Experienced Gentoo users can reduce the time by setting the MAKEOPTS variable in /etc/genkernel.conf to reflect the number of CPU cores:

MAKEOPTS="-j3"   # for two cores

The genkernel all command now triggers the compiler run. It is equally essential to build the initramfs:

genkernel --luks --zfs --disklabel initramfs

With its help, the kernel can open the LUKS device at boot time and subsequently access the ZFS pool and the filesystems it houses, such as /, /usr, /var, and so on.

The following command installs the sys-fs/zfs package:

emerge sys-fs/zfs

Because of the defined dependencies, the Gentoo Portage system knows that ZFS needs sys-kernel/spl and automatically installs the dependency. The next lines ensure that the zfs service is active in the relevant runlevels – the first one tells it to start at boot time, the second exports the pool at shutdown:

rc-update add zfs boot
rc-update add zfs-shutdown shutdown

Do not forget to set the root password using passwd.

Completing the System Setup

The rest of the installation follows the path of a classic Gentoo setup; in other words, it sets system parameters and installs basic services such as cron and syslog-ng.

The bootloader can be the modern GRUB version 2.00 or the legacy GRUB. For simplicity's sake, I will use GRUB 0.97 here:

emerge grub
mount /dev/sda1 /boot
grub-install /dev/sda

The configuration file, /boot/grub/grub.conf in Listing 5, contains the kernel options that open the encrypted ZoL pool correctly.

Listing 5



To prepare the system for the first standalone boot, you need to edit the /etc/fstab. Contrary to usual conventions, you'll be commenting out the lines for BOOT, ROOT, and SWAP here, because the ZFS pool will handle these assignments. The following commands

zfs umount-a

exit the chroot environment and unmount the filesystems.

Mountpoint Preparation

The final step of this fairly extensive guide adapts the property of the pool mountpoint. In the installation environment, the pool was mounted at /mnt/gentoo; on the production system, you will naturally want to use /:

zfs set mountpoint=/ rpool

Finally, unmount the other filesystems and export the ZFS pool:

umount -l /mnt/gentoo/dev{/shm,/pts}
umount -l /mnt/gentoo{/boot,/proc}
zpool export rpool

A reboot of the PC or laptop without the Live DVD shows that everything was successful. If you followed all of these steps correctly, the booted Gentoo will prompt you for the passphrase for the LUKS device. And, if you provide this, the computer will then boot from the decrypted ZFS pool. You can now check out the new environment with zfs list.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • ZFS on Linux

    License issues prevent the integration of ZFS with the Linux kernel, but Linux users can try the highly praised filesystem in userspace.

  • Tenth Anniversary Test: Live CD for Gentoo Linux 10.0

    The Gentoo project is celebrating its tenth anniversary, which inspired the Gentoo-Ten team to produce a special DVD that is now available in a test version.

  • Gentoo Linux

    Gentoo is a powerful and flexible Linux system that you can customize to fit perfectly into your environment. Our workshop describes how to set up Gentoo. We’ll also show you how to install and manage software on your Gentoo system with the popular Portage software management system.

  • Command Line: Encrypting Partitions

    Modern installers offer the option of encryption with just a few clicks, but you might want to take control of the process. We show how to encrypt your partitions safely without sacrificing convenience.

  • DM-Crypt/ LUKS

    Encrypting a home directory is easy. Encrypting your whole hard disk – including the root filesystem – takes a little more effort.

comments powered by Disqus

Direct Download

Read full article as PDF:

Price $2.95

Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Find SysAdmin Jobs