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
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
and if you want to reconfigure the keyboard, my entire reason for doing this:
Featured image by joncallas under a CC-BY license.