Home directory on separate disk

This procedure transfers the /home directory to a separate disk

Note that this procedure was documented from memory and may be incomplete.

Environment

This procedure was used when installing POP OS 22.04.

This may work for other distros.

Why

Trying to install /home on a separate disk does not work using the standard installation procedure using the pop os installer particularly if encrypting the separate disk is required.

Overview

  • Install Pop OS on one of the 2 disks as normal

  • login

  • using the disks application create an encrypted partition on the second disk called ‘home’

    • change properties such that is decrypted at startup

    • change properties of the partition and ensure that it mounts at startup and not session defaults

    • make the mount point /newhome

      • sudo mkdir /newhome

    • reboot

  • copy /home to /newhome

  • ensure that permissions are correct

  • rename /home to /oldhome

  • sudo mkdir /home

  • edit /etc/fstab and change /newhome to /home

  • reboot

  • delete /oldhome

Steps

Assuming one has installed Pop os login as user.

Prepare the external disk

- create one partition on the external disk using fdisk utility. 
- alternatively use GNOME disks utility to encrypt and partition disk.

$DEV will typically be /dev/nvme1n1

As sudo execute:

- sudo cryptsetup -v --verify-passphrase luksFormat $DEV   # Answer YES in CAPITAL
- sudo cryptsetup luksOpen $DEV home
- sudo mkfs.ext4 -L Home /dev/mapper/home
- sudo cryptsetup luksClose /dev/mapper/home

System configuration

Mount and unmount external drive.

UUID=$(blkid $DEV | cut -d' ' -f2 | cut -d'"' -f2)

gives (for example).

b0aced4a-0bd6-4560-bc06-3323fdca529d.

Create the necessary files:

echo "luks-$UUID UUID=$UUID /etc/luks-keys/$UUID" >> /etc/crypttab
echo "$PASSWORD" > /etc/luks-keys/$UUID
echo "LABEL=Home /newhome ext4 noatime,errors=remount-ro 0 1" >> /etc/fstab
mkdir /newhome

Reload systemd:

systemctl daemon-reload

Check all files touched do not have duplicate entries.

Test that mounting works without requiring passphrase.

sudo mount /newhome
sudo ls -l /newhome
sudo umount /newhome

Reboot

Check that /newhome is mounted automatically. Only ONE prompt for the decryption key should occur for the system disk. /newhome should decrypt and mount successfully

Move home directory

Login as user $USER

sudo sed -i "s/newhome/home/" /etc/fstab
sudo cp -r /home/$USER /newhome/$USER
sudo chown -r $USER:$USER /newhome/$USER
sudo mv /home /oldhome
sudo reboot

Tidy up

Remove old home directory:

sudo rm -rf /oldhome