所以我决定更换笔记本电脑上的操作系统。我曾经有Manjaro Linux安装有UEFI模式并且运行良好。现在我决定安装 Fedora。
我首先从 USB 在 UEFI 中实时启动 Fedora Workstation。一切都很好。然后我启动了官方安装程序并选择自动磁盘分区。安装成功。我重新启动了电脑。当它启动时,它无法检测到任何可启动媒体。因此,我决定通过手动分区重新安装系统。我创建了一个总蛋白有2个分区的分区表;efi系统分区安装于/启动/efi使用 fat-32 和 a 进行格式化根分区使用 ext4 格式化并安装在/。 efi分区有电喷标志已设置且大小为 500MiB。安装过程顺利,但系统仍然无法启动。
然后我又尝试了几次,几乎没有调整,但没有成功。我尝试使用 UEFI 在虚拟框中安装具有相同配置的系统(是的,我检查了启用 EFI(仅限特殊操作系统))每次都有效。也许笔记本电脑有故障?
你有什么建议我可能做错了什么,或者问题可能是什么?
答案1
在 UEFI 上,引导加载程序通常由 EFI 系统分区的唯一 UUID 和引导加载程序文件路径名来标识,两者都存储在系统 NVRAM 中的 UEFI 引导变量中。与旧的 MBR 式引导不同,仅指定要从中引导的磁盘不一定足够。
一些系统制造商在设计 UEFI 固件时内置了操作系统为 Windows 的假设,并添加了一个“有用”的功能,可以将 UEFI 启动变量重置为 Windows 使用的确切值。
首先将系统启动到救援模式在 UEFI 模式下。然后efibootmgr -v
以 root 身份运行。这将告诉您 UEFI 启动变量的当前状态。您还可以使用该blkid
命令列出系统拥有的每个磁盘的文件系统和分区 UUID。 EFI 系统分区的分区 UUID(在blkid
输出中列出为PARTUUID=<value>
)应与命令列出的引导变量中列出的 UUID 相匹配efibootmgr -v
。如有必要,您可以使用其他选项来efibootmgr
修复引导变量的内容。man efibootmgr
详情请参阅。
(注:UEFI固件使用分割UUID,而 GRUB 引导加载程序可以使用文件系统UUID。将blkid
前者列为PARTUUID=
,后者列为UUID=
。不要混淆两者。)
如果您发现 UEFI 引导变量没有指向 Fedora 引导加载程序,并且您所做的任何更改都不会在重新启动后保留,那么您很可能遇到了我之前提到的 UEFI 固件错误的一些变体。罗德里克·W·史密斯 (Roderick W. Smith) 将此称为启动妙招:请参阅此链接以获取一些已知变体及其解决方法的列表。
\EFI\boot\boot<arch>.efi
基本上,一种可能的解决方法是将引导加载程序(的副本)设置到 EFI 系统分区( ,<arch>
通常x64
或可能在典型 PC 硬件上)上的标准可移动磁盘引导路径中ia32
。另一种方法是将 Linux UEFI引导加载程序进入 Windows 通常使用的相同路径 ( \EFI\Microsoft\Boot\bootmgfw.efi
)。