恢复 luks 分区上丢失的引导加载程序

恢复 luks 分区上丢失的引导加载程序

我需要关于糟糕情况的建议。

我正在使用我的主 PC 安装一个新的 linux ditro。我使用 ISO 启动,然后在 上安装了发行版/dev/sdc,这是一个外部 USB 驱动器。不好的是,我在安装时没有意识到,我没有更改boot loader同一驱动器上的安装,但我保留了/dev/sda,它保存了我的主操作系统(LUKS 加密)。

显然,在此之后,主操作系统不再启动,并且我看到 GRUB 发出的错误消息:

error: no such cryptodisk found

现在,我有我的 的clonezilla 备份/dev/sda/,并且在文件列表中以及其他文件中,我看到

12/04/2022  04:59 AM                10 parts
12/03/2022  11:41 PM                38 sda-chs.sf
12/03/2022  11:41 PM         1,048,064 sda-hidden-data-after-mbr
12/03/2022  11:41 PM               512 sda-mbr
12/03/2022  11:41 PM               391 sda-pt.parted
12/03/2022  11:41 PM               338 sda-pt.parted.compact
12/03/2022  11:41 PM               267 sda-pt.sf
12/03/2022  11:41 PM       118,196,482 sda1.ext4-ptcl-img.gz.aa
12/04/2022  04:59 AM               512 sda2-ebr

我希望其中一些备份可以帮助我恢复情况(可能是 sda-​​mbr 和 sda-​​hidden-data-after-mbr?),但我想在做任何事情之前请求您的帮助,以避免更多损害。

任何人都可以建议如何恢复这种情况?

非常感谢!!

答案1

UEFI 或 BIOS 安装。看起来更像 BIOS,因为你有 MBR,也许还有 grub 的 core.img,它位于 MBR 之后的扇区中。现在大多数系统都是 UEFI 并且更喜欢 gpt 分区。

如果插入外部驱动器,它会启动吗?更新它以查看加密安装。

sudo apt-get update && sudo apt-get install lvm2 cryptsetup
sudo modprobe dm-crypt
sudo cryptsetup luksOpen /dev/sdXY my-crypt
sudo os-prober
sudo update-grub

然后将 grub 从外部驱动器安装到外部驱动器的 MBR。并从加密安装将 grub 安装到 sda。所以内部驱动器可以正常启动。

还有grub是什么版本的?如今,GRUB (v2.06) 允许使用 GRUB_ENABLE_CRYPTODISK=y 键并加载相应的 LUKS 或 LUKS2 模块,从 LUKS 加密的 /boot 分区(甚至是 LVM 内的分区)引导 Linux。

否则,您可以使用实时安装程序。

https://askubuntu.com/questions/63594/mount-encrypted-volumes-from-command-line

http://askubuntu.com/questions/719409/how-to-reinstall-grub-from-a-liveusb-if-the-partition-is-encrypted-and-there-i?rq=1

答案2

好的,我能够使用以下命令解决:

sudo -i
apt-get update
apt-get install cryptsetup lvm2
fdisk -l
cryptsetup luksOpen /dev/sda? TAG           
vgchange -ay
vgscan
vgchange -ay [VOLUME GROUP NAME]           # From the above command
lvscan
mount /dev/[VOLUME GROUP NAME]/[LOGICAL VOLUME NAME] /mnt          # LOGICAL VOLUME NAME from above command

cd /mnt
mount /dev/sda1 /mnt/boot
for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done

chroot /mnt

grub-install /dev/sda
update-grub

for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo umount /mnt$i; done

umount /mnt
vgchange -an
cryptsetup luksClose TAG

现在我必须解决设备的某种混淆问题,但我能够启动系统。

非常感谢@oldfred的帮助

相关内容