Skip to content

Instantly share code, notes, and snippets.

@samuelcolvin
Created May 14, 2017 12:04
Show Gist options
  • Star 53 You must be signed in to star a gist
  • Fork 24 You must be signed in to fork a gist
  • Save samuelcolvin/43c5ed2807e7db004b1058d0c9bfb068 to your computer and use it in GitHub Desktop.
Save samuelcolvin/43c5ed2807e7db004b1058d0c9bfb068 to your computer and use it in GitHub Desktop.
repairing boot for LUKS encrypted fs

Guides:

cryptsetup luksOpen /dev/sdb3 home_sdb3
vgchange -ay
lvscan
mkdir /media/linux
mount /dev/ubuntu-vg/root /media/linux/
mount -o bind /proc /media/linux/proc
mount -o bind /dev /media/linux/dev
mount -o bind /sys /media/linux/sys
chroot /media/linux /bin/bash
> fdisk -l:

Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: ED00E611-2AA0-40CB-BA69-97B8FAD3303E

Device       Start       End   Sectors   Size Type
/dev/sdb1     2048   1050623   1048576   512M EFI System
/dev/sdb2  1050624   2050047    999424   488M Linux filesystem
/dev/sdb3  2050048 500117503 498067456 237.5G Linux filesystem
mount /dev/sdb2 /boot
mount /dev/sdb1 /boot/efi
grub-install /dev/sdb
**OR** grub-update

umount /boot/efi
umount /boot

leave chroot

exit 
umount /media/linux/boot/efi
umount /media/linux/boot
umount -l /media/linux
vgchange -an
cryptsetup luksClose home_sdb3
@tobszarny
Copy link

tobszarny commented Apr 2, 2020

Thanks for the instructions, however i had to do some extra steps.

  1. Mount blind just so you can read luks label from /etc/crypttab on the mounted volume and to secondly mount correctly.
    cryptsetup luksOpen /dev/sdb3 <the-label>
  2. I never get /dev/ubuntu-vg/root but /dev/mapper/sdb3_crypt

Ignoring step 1 lead to booting into initram-fs cli.

@samuelcolvin
Copy link
Author

great, thanks. Haven't used this for years.

@tobszarny
Copy link

Latest Windows update made my day, as both occupy same machine in dual boot setup. I'm glad, I came across the work of yours, above, to help me get through issues with Ubuntu boot.

PS. I haven't check if Windows is booting, but for the time being, I'm happy Ubuntu does.

Thanks again.

@GiovaniMFMurari
Copy link

Thank you very much!

@nikitacometa
Copy link

Thanks man! Helped a lot, easy-breezy guide (:

@agjino
Copy link

agjino commented Nov 27, 2020

It worked for me, but with a couple of issues:

  1. If the flash drive I was booting the live CD from would mount to /dev/sda, the main Ubuntu drive would end up in /dev/sdc and even though I adjusted the script accordingly, it still would boot into the grub command line instead of the OS. I had to try over and over until the live CD got mounted to /dev/sdc and the Ubuntu drive mounted to it usual /dev/sdb.
  2. With this method os-prober fails to identify Windows with the error WARNING: Failed to connect to lvmetad. Failing back to device scanning What I did to get Windows back was copy-paste its entry from the grub.cfg generated by the main system's update-grub, once I managed to fix grub through your method. The grub.cfg that gets generated is incorrect and the steps to fix grub have to be run again, but at least the Windows entry is sound so it can be saved somewhere and pasted into the grub.cfg generated in the live CD.

@vijay-prema
Copy link

Nice. This saved me after I cloned a drive onto a new ugraded SSD for my PC. I'm using Kubuntu 20.04 and mine was under /dev/vgkubuntu/root. Had to also do some corrections to disk UUIDs to stop it getting confused by the previous SSD which I cloned from having the same UUIDs, then fix erroneous entries in the the /etc/fstab to prevent slow bootup .

@erikmansson
Copy link

Sir, you are a lifesaver

@message
Copy link

message commented Apr 20, 2021

Thank you <3

@tovilovic
Copy link

It worked! Thank you so much!!!

@thierryale
Copy link

Thanks a lot, this has saved my installation! :-)
(with small adaptations for XUbuntu 20.04 live USB as the vg root directory was automatically mounted under /media/xubuntu/ )

btw, as efi & boot were already unmounted under the chroot, shouldn't the following:

umount /media/linux/boot/efi
umount /media/linux/boot

be rather:

umount /media/linux/proc
umount /media/linux/dev
umount /media/linux/sys

?

@SeaMonkey82
Copy link

SeaMonkey82 commented Dec 5, 2021

Thank you so much for this! I would have been completely lost without it. As the first reply suggests, knowing the correct label for the LUKS partition is necessary for this to work. I actually just checked another system with Linux Mint on an NVMe drive to find it. It was nvme0n1p3_crypt

edit Just in case anyone else would run into the same situation I did, while this worked to get back into my OS, whenever I was running kernel updates, nothing was changing in the grub menu. I was racking my brain trying to figure out why, and it turned out that my /etc/fstab was missing the mount point for /boot at the UUID of /dev/nvme0n1p2.

@childersd
Copy link

Amazing, thank you!

@drakewild
Copy link

Thanks, saved a lot of time cause of this!

@ravelzh
Copy link

ravelzh commented Feb 20, 2022

Not all heroes wearing capes, THANK YOU :-) 👍

@F-Phi
Copy link

F-Phi commented Mar 13, 2022

update-grub NOT "OR grub-update" as mentioned above

@brandon1024
Copy link

Thank you!!

@marcosvfc
Copy link

Thank you!!! Many many thanks

@themmm
Copy link

themmm commented Feb 7, 2023

Had to use "rbind" to make it work:

mount -o rbind /proc /media/linux/proc
mount -o rbind /dev /media/linux/dev
mount -o rbind /sys /media/linux/sys

Other than that it worked great ty!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment