我双启动 Windows 和 Pop_OS!,最近,Windows 更新了,把事情搞砸了:(
我的一个驱动器上有两个 EFI 分区,一个是我之前用于 Ubuntu/Windows 的小(旧)分区,另一个是包含 systemd 的新的较大分区。我需要默认启动到 systemd。我可以通过 UEFI 手动选择 systemd 来访问它,但即使在较大的分区上设置启动标志后,我的机器仍然启动到旧的(错误的)分区。
我不知道如何解决这个问题,因为互联网似乎建议设置启动标志应该可以解决这个问题。我想删除旧分区是一种选择,但这听起来很可怕,我不想让事情进一步混乱。应该注意的是,我的 BIOS 中的默认启动位置并没有提供太多信息,它似乎只是提供了当前不正确的分区。另外,我想以 Windows 不会再次导致此问题的方式修复此问题。
有任何想法吗?
编辑: sudo blkid 的输出
systemd 的分区是 /dev/nvme0n1p6
另外, gparted 的输出可能有用:
编辑2:
我不知道这是否有帮助,但我发现 Windows 只能从分区 1 和 Pop_OS 启动!仅来自分区 6,即使 systemd 操作系统选择屏幕有 Pop_OS 的选项!和窗户
答案1
据我了解,这描述了当前的状态:
/dev/nvmen0n1p1
安装在/tmp/mnt
– 启动 Windows,而不是 Pop_OS/dev/nvmen0n1p6
安装在/boot/efi
– 启动 Pop_OS,而不是 Windows
我想出了行动方针:
du -sh /boot/efi
获取“Linux ESP”大小du -sh /tmp/mnt
获取“Windows ESP”大小- 检查 Windows ESP 是否足够大以支持 Linux ESP
umount /boot/efi
卸载“Linux ESP”dd if=/dev/nvmen0n1p6 of=p6.backup.vfat
创建备份以防万一mount /boot/efi
重新挂载“Linux ESP”rm -r /tmp/mnt/EFI/ubuntu
看起来您曾经安装过 Ubuntu。这个过时的引导加载程序现在可以消失了。cp -r /tmp/mnt/* /boot/efi
将“Windows ESP”与“Linux ESP”合并(这将“修复”Windows 启动 - 但在错误的 ESP 中)`cp -r /boot/efi* /tmp/mnt/
将合并的 ESP 复制到“Windows ESP”umount /boot/efi
再次卸载“Linux ESP”dd if=/dev/zero of=/dev/nvmen0n1p6
杀死“Linux ESP”(这可以通过使用备份回 dd'ing 来撤消/dev/nvmen0n1p6
)。现在UEFI别无选择,只能选择仅存的ESP- 编辑
/etc/fstab
所以/dev/nvmen0n1p1
将被安装在/boot/efi
- 可选:
mount /boot/efi
安装“合并 ESP” - ???
- 重新启动并祈祷
可选:您应该能够运行grub-install /dev/nvmen0n1
并update-grub
在安装后重新合并 ESP。
我对 Pop_OS 不熟悉!引导样式。我从来没有听说过systemd-bootx64.efi
。我建议准备一个 USB 拇指驱动器超级GRUB2磁盘– 这通常可以启动任何东西。