Related to this question, it seems the only way I can access one encrypted boot drive from another encrypted boot drive (both using the default encryption options when installing Ubuntu) is if the two drives have different volume group (VG) names. By default, Ubuntu uses the volume group name "ubuntu-vg" and if you have two volume groups with the same name, lvm2 has a problem.
A bigger problem was when I read this and decided to rename my active boot drive's VG to something different. Then I rebooted and cryptsetup would no longer recognize my password. It gave me the error
unknown fstype, bad password or options?
Using a LiveUSB I renamed the VG on that boot drive back to ubuntu-vg and it booted again (relief).
Now, if the VG names must be unique but they also cannot change, then there is a problem. I did not see an option when I installed Ubuntu to set the VG name. I guess it is either hard-coded or in a config file somewhere. I checked the smaller (unencrypted) boot area on the drive and I see in
/grub/grub.cfg
There are some references to this "ubuntu-vg" which makes me think I can change it.
However, I am still fairly new to Ubuntu so before I go being a creative person with another non-bootable drive, I would love some input from the experts here.
Can I rename the VG using vgrename then change /grub/grug.cfg by doing a find-and-replace all of the old VG name to the new VG name and magically everything will work?
After reading George's link (and several others), I wanted to post this here as an answer.
If you need to rename the volume group of an encrypted boot drive, these are the steps you should take. At least they seem to work well on 16.04.
Now, when grub loads, it will see the volume group name it expects and you will be able to load your encrypted boot drive.
I actually managed to do this from a live system like this:
/proc/mounts is used by update-initramfs and update-grub to set the root device. unfortunately, /proc/mounts does NOT get updated when changing the vg name.
therefore, we need to fake the /proc/mounts file. doing mount --bind mounts /proc/mounts does NOT work. we need to fake the whole /proc dir.