One of my servers had a failure over the weekend and caused some corruption of the boot loader. This is the first time I have experienced this with a setup built on LVM and LUKS, which provided a little extra complexity to solve the problem.
This time, the Ubuntu Boot Repair tool was used because in the process of trying to fix this problem manually I had caused further issues.
symbol grub_calloc not found grub rescue
One of the problems I ran into seemed to be the way that I was using LVM when decrypting and mounting my root partition.
device-mapper: create ioctl on xubuntu--vg-root failed: Device or resource busy
Here is what worked:
# STEP 1: boot into live cd # create rescue folder sudo mkdir -p /rescue/boot # in this case the root partition was encrypted sudo cryptsetup open --type=luks vg0-root /dev/sda5 sudo mount /dev/mapper/vg0-root /rescue/boot sudo mount /dev/sda1 /rescue/boot sudo mount --bind /dev /rescue/dev && sudo mount --bind /dev /rescue/dev && sudo mount --bind /dev/pts /rescue/dev/pts && sudo mount --bind /proc /rescue/proc && sudo mount --bind /sys /rescue/sys # chroot sudo chroot /rescue grub-install /dev/sda grub-install --recheck /dev/sda update-grub sudo umount -a
# STEP 2: run the rescue utility # From the Boot-Repair live cd sudo mkdir -p /rescue/boot sudo cryptsetup open --type=luks vg0-root /dev/sda5 sudo mount /dev/mapper/vg0-root /rescue/boot sudo mount /dev/sda1 /rescue/boot # at this point you have the encrypted volumes mounted. Now run the Boot Repair utility
The second step may not be necessary for you. I had done something wrong in the process before I discovered how to fix it so my entire boot partition had problems. After getting the device decrypted and mounted the utility was able to walk me through the process of fixing the VM so it would boot again.