我安装了 Linux (Fedora) 作为第二个操作系统。我确实喜欢过很多次,但对于其他发行版来说。安装后,我尝试启动我的第一个操作系统(Windows 11),但在 grub 中我没有看到她。我尝试重新安装 Windows,当我进入 BIOS 时,我无法在闪存驱动器中启动,并且所有 UEFI 启动方式都消失了。现在我没有 Windows,也无法安装其他东西。我还尝试更新 grub,在配置文件中添加一些参数等。如果我尝试在 Windows 中启动(在我的一张图片中您可以看到),那么它会在 grub 中启动我,之后我就可以'加载我的发行版。
在安装 Fedora 之前,每次安装程序出现任何错误时,我都会尝试通过选择 EFI 文件进行启动,并且它总是有效 - 我尝试用这种方法来解决问题,但没有效果。
所有图像:https://i.stack.imgur.com/BIcKV.jpg
PS我知道我的英语不是很好,但我正在学习他。
答案1
根本原因是您没有在 UEFI 模式下启动 Fedora 安装程序,而是在传统 BIOS 模式下启动。它已在您的磁盘上写入了传统 BIOS 样式的 MBR,并且显然您的系统固件(当前?)更喜欢以传统模式启动而不是 UEFI 模式。如果它发现可以在两种模式下启动的磁盘,它将选择旧模式,这对于您现有的 Windows 11 安装来说是错误的选择。
如果您的 BIOS 设置包含“仅以 UEFI 模式启动”选项,选择该选项可能是解决此问题并避免将来再次发生的最简单方法。
如果没有这样的选项,有两种方法可以修复它。
一种方法是破坏MBR引导代码因此系统固件将别无选择,只能以 UEFI 模式启动。您可以通过从某些外部实时媒体引导 Linux 并将零写入硬盘主引导记录的前 440 字节来实现这一点,如下所示:
dd if=/dev/zero of=/dev/sda bs=440 count=1
如果你这样做,非常小心:此命令中的任何错误都可能导致进一步的破坏。此外,从外部介质启动时,系统磁盘可能会获得不同的设备名称,因此请确保您瞄准的是正确的磁盘,并/dev/sda
根据需要调整命令的部分。
(由于您的磁盘是使用 GPT 分区进行分区的,因此 MBR 的内容应该不重要,但为了安全起见,最好不要覆盖前 440 字节之后的部分)
另一种方法是从 Windows 安装介质启动(重要:在 UEFI 模式下!)并使用其“修复启动”功能。
您可能想要删除该/dev/sda7
分区,因为它包含旧版 BIOS 版本的 GRUB,当 Fedora 在 UEFI 模式下正确安装时,该分区应该变得无用。
要修复现有的 Fedora 安装,您可以从外部实时 Linux 介质启动,挂载 Fedora 安装的根文件系统,chroot 到其中,然后删除软件包grub2-pc-<version number>.x86_64.rpm
(用于以旧版 BIOS 样式启动的 GRUB 版本)并进行安装grub2-efi-<version number>.x86_64.rpm
。为了与安全启动兼容,您可能还应该安装该shim-<version number>.x86_64.rpm
软件包。然后您应该/dev/sda1
在 处挂载 EFI 系统分区/boot/efi
,并运行grub2-install --target=x86_64-efi /dev/sda
以显式安装 UEFI 版本的 GRUB。
如果您的实时媒体无法在 UEFI 模式下启动,grub2-install
可能会显示错误消息,因为它将无法访问 UEFI 启动变量。但它应该仍然安装了 UEFI GRUB,因此您应该能够通过选择Boot from EFI File
(\EFI\Fedora\shimx64.efi
安全启动兼容)或\EFI\Fedora\grubx64.efi
(禁用安全启动)来启动。
一旦系统以 UEFI 模式启动到 Fedora,您只需重新运行即可grub2-install --target=x86_64-efi /dev/sda
创建必要的 UEFI 启动变量,或者安装该efibootmgr
软件包并使用它自行配置 UEFI 启动变量。