如果我有两个 EFI 分区,如何设置默认启动分区?

如果我有两个 EFI 分区,如何设置默认启动分区?

我双启动 Windows 和 Pop_OS!,最近,Windows 更新了,把事情搞砸了:(

我的一个驱动器上有两个 EFI 分区,一个是我之前用于 Ubuntu/Windows 的小(旧)分区,另一个是包含 systemd 的新的较大分区。我需要默认启动到 systemd。我可以通过 UEFI 手动选择 systemd 来访问它,但即使在较大的分区上设置启动标志后,我的机器仍然启动到旧的(错误的)分区。

我不知道如何解决这个问题,因为互联网似乎建议设置启动标志应该可以解决这个问题。我想删除旧分区是一种选择,但这听起来很可怕,我不想让事情进一步混乱。应该注意的是,我的 BIOS 中的默认启动位置并没有提供太多信息,它似乎只是提供了当前不正确的分区。另外,我想以 Windows 不会再次导致此问题的方式修复此问题。

有任何想法吗?


编辑: sudo blkid 的输出

在此输入图像描述

systemd 的分区是 /dev/nvme0n1p6

另外, gparted 的输出可能有用:

在此输入图像描述


编辑2:

输出tree -L 3 /boot/efi/在此输入图像描述

挂载/dev/nvme0n1p1: 在此输入图像描述

我不知道这是否有帮助,但我发现 Windows 只能从分区 1 和 Pop_OS 启动!仅来自分区 6,即使 systemd 操作系统选择屏幕有 Pop_OS 的选项!和窗户

答案1

据我了解,这描述了当前的状态:

  • /dev/nvmen0n1p1安装在/tmp/mnt– 启动 Windows,而不是 Pop_OS
  • /dev/nvmen0n1p6安装在/boot/efi– 启动 Pop_OS,而不是 Windows

我想出了行动方针:

  1. du -sh /boot/efi获取“Linux ESP”大小
  2. du -sh /tmp/mnt获取“Windows ESP”大小
  3. 检查 Windows ESP 是否足够大以支持 Linux ESP
  4. umount /boot/efi卸载“Linux ESP”
  5. dd if=/dev/nvmen0n1p6 of=p6.backup.vfat创建备份以防万一
  6. mount /boot/efi重新挂载“Linux ESP”
  7. rm -r /tmp/mnt/EFI/ubuntu看起来您曾经安装过 Ubuntu。这个过时的引导加载程序现在可以消失了。
  8. cp -r /tmp/mnt/* /boot/efi将“Windows ESP”与“Linux ESP”合并(这将“修复”Windows 启动 - 但在错误的 ESP 中)`
  9. cp -r /boot/efi* /tmp/mnt/将合并的 ESP 复制到“Windows ESP”
  10. umount /boot/efi再次卸载“Linux ESP”
  11. dd if=/dev/zero of=/dev/nvmen0n1p6杀死“Linux ESP”(这可以通过使用备份回 dd'ing 来撤消/dev/nvmen0n1p6)。现在UEFI别无选择,只能选择仅存的ESP
  12. 编辑/etc/fstab所以/dev/nvmen0n1p1将被安装在/boot/efi
  13. 可选:mount /boot/efi安装“合并 ESP”
  14. ???
  15. 重新启动并祈祷

可选:您应该能够运行grub-install /dev/nvmen0n1update-grub在安装后重新合并 ESP。

我对 Pop_OS 不熟悉!引导样式。我从来没有听说过systemd-bootx64.efi。我建议准备一个 USB 拇指驱动器超级GRUB2磁盘– 这通常可以启动任何东西。

相关内容