我有一台安装了 Xubuntu 的笔记本电脑。
在安装时我选择了全盘加密选项。
但是昨天我意外地将 DSL 映像添加到了 sda1(/boot 分区)而不是 sdb1(pendrive)。
我怎样才能修复我的 /boot?
答案1
您好,我在我的笔记本电脑上测试了以下命令 - 是的,我删除了所有内容/dev/sda1
并让它再次工作 - 所以这里是:
- 获取实时图像并从中启动。
- 首先让我们清理(这是由于 OP 帖子中的“将 DSL 映像添加到 sda1”造成的)/dev/sda1
一下 -分区;重新/dev/sda1
格式化扩展2不要忘记确认更改,然后设置“启动”标志(右键单击分区 --> 选择“管理标志” --> 选中“启动”旁边的框 [这会自动将“esp”标志设置为] --> 单击“关闭”按钮)。
现在我们将一切准备就绪,
chroot
进入已安装的系统,然后我们将切换到它(通过chroot
):sudo cryptsetup luksOpen /dev/sda5 sda5_crypt sudo vgscan --mknodes sudo vgchange -ay sudo mount /dev/mapper/ubuntu--vg-root /mnt sudo mount /dev/sda1 /mnt/boot for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot /mnt
好的,让我们
删除并重新安装 GRUB:(由于 ncurses,让您的终端处于全屏模式),这可能会询问您是否要删除所有内容 - 选择是;现在让我们在询问时在此处选择重新安装它。grub-install /dev/sda
apt purge grub-common
apt install grub-pc
/dev/sda
最后我们需要重新安装内核来获取所需的initrd.img-*和vmlinuz-*图像放入“/boot/”中。我们得到当前安装的内核,
apt list --installed linux-image-*
现在我们重新安装这个内核apt install linux-image-[version-numbers]-generic --reinstall
——不要忘记将括号替换为实际版本号。几乎完成了;使用Ctrl+退出 chroot d,或者只需输入
exit
,然后重新启动(通过 GUI 菜单或使用sudo reboot
)!
使用的资源:
答案2
我必须这样做才能挽救加密的 Manjaro 安装,并且必须修改另一个答案的命令稍微修改一下就可以工作了。
1️⃣ 我没有将驱动器的启动分区挂载到/mnt/boot
,而是将其挂载到/mnt/boot/efi
。否则,GRUB 会抱怨它找不到 EFI 分区。
2️⃣我必须添加/sys/firmware/efi/efivars
到 for 循环中(归功于这个答案)。如果没有这个,GRUB 将无法识别chroot
ed 系统是在 UEFI 模式下启动的,尽管它确实:
# grub-install /dev/drive
Installing for x86_64-efi platform.
EFI variables are not supported on this system.
EFI variables are not supported on this system.
grub-install: error: efibootmgr failed to register the boot entry: No such file or directory.
驱动器详细信息:
# "drive" is the encrypted Manjaro drive we need to reinstall GRUB on
$ lsblk -o NAME,UUID,SIZE,FSTYPE,MOUNTPOINT,MODEL,SERIAL
drive 931.5G
├─drivep1 UUID1 300M vfat # EFI partition
├─drivep2 UUID2 922.4G crypto_LUKS # /
└─drivep3 UUID3 8.8G crypto_LUKS # SWAP