One of the few things I miss about Fedora when
using Ubuntu and related GNU/Linux
distributions is the ease of setting up fairly complex disk partitioning
schemes. I’m a big believer in disk mirroring (to protect against
hard drive failure) and in encryption (to protect against data loss due
to hardware theft), and Ubuntu requires use of an alternate, text-based
installer while Linux Mint
doesn’t even do that much.
Fortunately, this is Linux, which means I have all the tools I need
to get this to work. Many thanks
to this
guide from 2008, which provided the base instructions.
Note that I do not set up software RAID (mirroring) in this
case, as these instructions are for a laptop. If you want mirroring,
my advice is to build two partitions on each mirror, one
for /boot and one for the mirror volume, then build an
encrypted volume atop the mirrored volume; add that encrypted volume
to a volume group; and finally build logical volumes in that volume
group.
A note about naming: throughout these instructions I refer
to rootvg as the root volume group. This is fine for small
installations; however, if you ever move disks between computers
that also have their own group called rootvg, this
causes trouble (generally, failure to recognise the new physical and
logical volumes). For that reason, in practice I usually name my
volume group with some unique name, perhaps related to the
hostname.
- Boot from Linux Mint Katya DVD
- Open the terminal from the menu (lower left-hand corner). Install
the Logical Volume Manager with sudo apt-get install
lvm2.
- If this drive has previously held unencrypted data:
- Open a web browser and visit some site to generate some entropy;
install and play some games too.
- sudo dd if=/dev/urandom of=/dev/sda bs=1M & sleep 5; while
sudo pkill -USR1 dd; do sleep 60; done (make sure to continue
web browsing and playing games—when unattended, leave some
music or videos playing)
- Format the hard drive: sudo fdisk /dev/sda. Create a 512M
primary partition 1 for /boot (no BIOS that I’m
aware of supports booting from an encrypted disk, so your boot
partition must be plaintext) and then an extended partition 2 for
the rest of the disk, with a logical partition 5 filling it.
I’m sure there’s a GUI to do this too, but the
command-line is easier and quicker.
- Create an encrypted volume: sudo cryptsetup luksFormat -c
æs-cbc-essiv:sha256 -s 256 /dev/sda5 (if you get an error,
run
sudo modprobe dm-crypt; sudo modprobe æs-i586 to
install the crypto modules)
- Activate the new volume: sudo cryptsetup luksOpen /dev/sda5
cryptpv
- Create an LVM physical volume on the encrypted volume: sudo
pvcreate /dev/mapper/cryptpv
- Create a LVM volume group: sudo vgcreate rootvg
/dev/mapper/cryptpv
- Create a logical volume for your swap (virtual memory): sudo
lvcreate -L 4G -n swaplv perique (where 4G is twice your
RAM).
- Create a logical volume for your root filesystem: sudo lvcreate
-l 100%FREE -n rootlv rootvg
- Format your boot partition: sudo mkfs.ext2 /dev/sda1
- Format your root partition: sudo mkfs.ext4 -j
/dev/mapper/rootvg-rootlv
- Install Linux Mint as usual; the installer should detect the
partition and logical volumes. Make sure to use the advanced
partitioning tool. Format /boot as ext2;
format / as ext4 (the reason for formatting them earlier
is so that the installer doesn’t get confused; I reformat in
case the installer uses any special options). Do not use
the swap as swap; the installer will be confused and believe that
it is a physical volume. If others will have unsupervised login
access, consider encrypting your home directory as well.
- Mount the new root on /mnt: sudo mount
/dev/mapper/rootvg-rootlv /mnt
- Mount the new /boot: sudo mount /dev/sda1 /mnt/boot
- Change root (this makes the current process think that /mnt
is
/—which is another way of saying that it makes it appear
that you’re working inside the freshly-installed system): sudo
chroot /mnt
- Mount special filesystems: mount -t proc proc /proc; mount -t
sysfs sys /sys; mount -t devpts devpts /dev/pts
- Update the list of available software: apt-get update
- Install LVM2 on the freshly-installed system: apt-get install
lvm2
- Update the cryptography table: vi /etc/crypttab
cryptpv /dev/sda5 none luks
- Update the filesystem table: vi /etc/fstab
/dev/mapper/rootvg-swaplv none swap 0 0
- Updated the list of modules installed in the boot-initialisation
ramdisk (this may actually be overkill nowadays): vi
/etc/initramfs-tools/modules
dm_mod dm_crypt sha256_generic æs-i586
- Build the new initramfs: update-initramfs -k all -c
- Unmount the special filesystem: umount /dev/pts; umount /sys;
umount /proc
- Exit the chroot jail: exit
- Unmount the boot filesystem: sudo umount /mnt/boot
- Unmount the freshly-installed root filesystem: sudo umount
/mnt
- Format the swap logical volume: sudo mkswap -L swap -f
/dev/mapper/rootvg-swaplv
- Reboot: sudo shutdown -r now
After following these instructions, you should have a fully-encrypted
root volume running Linux Mint.