系统:
Manjaro 在 m.2 nvme 驱动器上运行,Windows 10 在单独的 HDD 上运行
问题:
假期期间,我似乎把我的系统弄得一团糟。几个月来,我的系统一直很稳定,但我想要 SecureBoot 的安全功能,所以我在 BIOS 中启用了它。从那时起,我的系统就无法启动 Manjaro,只能加载 Win10。我重置了安全启动设置,但问题仍然存在。
目前,我能够启动使用 Rufus 以 dd 模式制作的实时 Manjaro 磁盘。我曾经mhwd-chroot
访问过 上的现有安装nvme0n1p2
,因此可以备份我的文件。我尝试运行grub-install /dev/nvme0n1
,并得到:
grub-install: error: cannot fine EFI directory.
经过一番查找,我发现我的 Manjaro 的 EFI 目录似乎在nvme0n1p1
。所以我尝试挂载它:
# mount /dev/nvme0n1p1 /boot/efi
mount: /boot/efi: unknown filesystem type 'BitLocker'
查看lsblk -f
,我可以看到该分区确实被列为 BitLocker(即/dev/sda3
Windows 文件系统分区)。我是否可以正确地假设这看起来像是 Win10 加密了我的 EFI 分区?我的下一步恢复步骤是什么?我可以使用 GParted 重新格式化该分区,然后将其挂载到/boot/efi
,然后运行grub-install
吗?
有关更多信息,我确实尝试使用启动恢复工具,但显然它只适用于 Ubuntu 发行版。无论如何,这里是它的分析的 pastebin,它可能有用也可能没用:http://paste.ubuntu.com/p/PkmfdtxHjq/
答案1
所以,在经历了许多痛苦和折磨之后,我终于解决了我的问题。我认为我之前的直觉是正确的——打开安全启动然后启动到 Windows 的操作不知何故加密了我的 Linux EFI 分区nvme0n1p1
。我会可能我一直按照自己的直觉清除该分区,但由于它只有 300MiB,不值得占用空间,所以为了以防万一我创建了一个新分区。以下是我解决此问题的步骤:
- 启动 Manjaro live usb
- 运行 GParted
- 通过从左侧缩小,在 BitLocker
nvme0n1p1
和我所运行的文件系统之间创建一个新的 300MiB 分区。新分区应为 fat32nvme0n1p2
nvme0n1p2
- 在 GParted 中应用更改
- 通过 GParted将
boot
和esp
标志应用于新分区( )nvme0n1p4
- 我们
mhwd-chroot-shell
将chroot
进入您的系统 (nvme0n1p2
) - 更改
/etc/fstab
为使用新分区,而不是旧分区。 - 更新 GRUB
更新 grub:
$ sudo su
# grub-install /dev/nvme0n1
# update-grub
fstab 更改:
- UUID=319a7d84-9d20-4f5f87f3-10948da50d73 /boot/efi /dev/nvme0n1p4: PARTUUID= defaults 0 1
+ UUID=C410-9DC8 /boot/efi vfat defaults 0 2
我不确定为什么那里的原始行有不同的格式。最初我的新行遵循相同的格式,但那也行不通。经过更多阅读后,我似乎清楚它应该在末尾有一个2
,而不是一个1
,并且额外的细节不属于这里。
此时,我重启了机器,没有插入 USB 线,以为已经解决了问题,但问题仍然存在。因此还需要执行几个步骤:
- 插入 Live USB 并重启,直到进入 Live USB 的引导加载程序菜单。底部有一个“检测 EFI 引导加载程序”选项。
- 选择设备的引导程序。在我的例子中,选择 (hd1,4)
- 此时,我的原始 GRUB 已加载,我能够登录系统。登录后,我再次更新 grub(与之前相同的命令)。我现在可以正常启动系统了!无需 Live USB!
这对我来说都是新事物,因为我以前从未遇到过此类问题。希望其他人可以使用这些信息。
最后说明mhwd-chroot-shell
:我遇到了一些麻烦,因为它无法检测/etc/
到我nvme0n1p2
分区中的目录,因此无法识别任何 Linux 系统。为了解决这个问题,我最终调整了 shell 脚本。就在它抛出“未找到 Linux 系统!”的错误之前,我添加了一个检查,如果它无法检测到任何 Linux 系统,则手动将我的分区注入其中:
if [ $nbpart -eq 0 ]; then
list[$nbpart]=/dev/nvme0n1p2
((nbpart++))
fi