Martin Paul Eve bio photo

Martin Paul Eve

Professor of Literature, Technology and Publishing at Birkbeck, University of London

Email Books Twitter Github Stackoverflow MLA CORE Institutional Repo Hypothes.is ORCID ID  ORCID iD Wikipedia Pictures for Re-Use

The other day I was installing Xubuntu 10.10 onto an old Mac G4 Powerbook and got the keyboard layout wrong. I had encrypted the entire disk and so, with the keyboard mapped entirely incorrectly ("j" was enter), I was unable to unlock the disk to continue.

To solve this, I booted off the alternate CD and entered a recovery shell, hoping this would ask me to unlock the disk. Sadly, no luck, it dumped me to a minimal BusyBox command shell to work out the unlock procedure myself. Here's how I did it. Please note, I can take no responsibility if these instructions cause damage to your system; they didn't for me, but if you don't know what you are doing, you could lose data.

Many of these instructions are derived from the Debian crypto rescue document.

Enable LUKS Crypto

Execute the following commands in the rescue prompt. One or more may fail, this shouldn't matter.

anna-install crypto-modules
depmod -a
modprobe dm-mod
modprobe aes

Determine which partition needs unlocking

Use fdisk (or on a Mac, parted/pdisk) to ascertain which is your root partition. You'll also need to determine your boot partition. I'm not going to go into details here as, if you don't know how to do this, you need to read more before you can safely complete this guide.

Decrypt the partition

Assuming your encrypted partition was hda4:

cryptsetup luksOpen /dev/hda4 hda4_crypt

Determine which logical volumes exist within the group

lvdisplay | grep "LV Name"

This produces an output like this:

LV Name        /dev/myhost/root
LV Name        /dev/myhost/home
LV Name        /dev/myhost/swap_1

As the group name is "myhost" in the above example (it will be different for you), enable the logical volume with:

vgchange -a y myhost

Mount partitions

Obviously substituting "myhost" for the group and "sda1" for your boot partition

mkdir /target
mount /dev/myhost/root /target
mount /dev/myhost/home /target/home
mount /dev/sda1 /target/boot
mount proc /target/proc -t proc
mount sysfs /target/sys -t sysfs

Check that /target/etc/crypttab contains the correct name (in this example "myhost"). If it doesn't:

dmsetup rename myhost name_according_to_crypttab

Finally:

chroot /target

and if you want to reconfigure the keyboard, my entire reason for doing this:

dpkg-reconfigure console-setup

Featured image by joncallas under a CC-BY license.