我有一个 pastbin URL: 糕点箱
我有两个物理硬盘,Ubuntu 20.04 安装在第二个硬盘上的 LUKS 加密驱动器上。引导加载程序位于第一个驱动器上。我删除了第一个驱动器(它安装了 Windows,我不再需要它了)。但现在我无法再启动了。
有人问我是否也删除了 uefi 分区。我不知道。我使用 gparted 删除了 windows 分区。我该如何查找?
fdisk -l 有输出:
Device Start End Sectors Size Type
/dev/sda1 64 7465119 7465056 3.6G Microsoft basic data
/dev/sda2 7465120 7473615 8496 4.1M EFI System
/dev/sda3 7473616 7474215 600 300K Microsoft basic data
/dev/sda4 7475200 15761440 8286241 4G Linux filesystem
但是我当然不知道这个 EFI 分区是否包含任何数据,并且我在第二个 SSD 上还有第二个 EFI 分区。
我可以从实时 USB 启动并挂载加密分区。
第二块硬盘有三个分区:
Device Start End Sectors Size Type
/dev/nvme1n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme1n1p2 1050624 2549759 1499136 732M Linux filesystem
/dev/nvme1n1p3 2549760 2000408575 1997858816 952.7G Linux filesystem
但是我该如何重新安装引导程序?我应该将它安装在第一个驱动器还是第二个驱动器上?
我试过:
### Mount encrypted rootfs in chroot environment
sudo -i
apt-get update
apt-get install cryptsetup lvm2
fdisk -l
cryptsetup luksOpen /dev/nvme1n1p3 rootcrypt # device is your root partition
vgchange -ay
vgscan
vgchange -ay vgubuntu # From the above command
lvscan
mount /dev/vgubuntu/root /mnt # LOGICAL VOLUME NAME from above command
modprobe efivars
mount /dev/nvme1n1p2 /mnt/boot
mount /dev/nvme1n1p1 /mnt/boot/efi # nvme? is your efi partition
for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done
cp /etc/resolv.conf /mnt/etc/
chroot /mnt
### Reinstall grub
apt-get install --reinstall grub-efi-amd64
grub-install /dev/nvme1n1
update-grub
exit
### Not tested
umount /mnt/boot/efi
umount /mnt/boot
umount /mnt
vgchange -an
chryptsetup luksClose rootcrypt
这解决了我的问题。
得到教训:
- 必须手动将 efi 和未加密的启动分区挂载到解密的根文件系统中
- 还需要安装 efivars
- 必须在第二个驱动器上执行 grub-install
我还不清楚:为什么卸载失败。
答案1
启动到实时环境。
将其安装在操作系统所在的驱动器上。
该命令sudo grub-install /dev/sdb
将安装Grub2在第二个驱动器上。
我看不到 pastebin,因为他们在创建帐户后没有给我发送电子邮件。所以我缺少一些信息。还有关于如何设置第二个驱动器的信息。
有关更多信息,请参阅此页面:https://help.ubuntu.com/community/Grub2/Installing. 使用适合您的设置的命令。