背景资料
我已经尝试在BIOS设置中查找启动顺序选项,唯一的选择是SSD作为一个整体,我无法选择要启动的特定分区。
你在误解的情况下运行 - 你似乎认为EFI引导到分区,但事实并非如此。在EFI下,引导条目存储在NVRAM中,这些条目指向文件。您可以在单个分区上拥有一个,两个,十个,一百个或更多引导程序,也可以分布在任意数量的分区上。如果您认为EFI是引导磁盘或分区,您可能会得出错误的结论并尝试以完全不合适的方式解决问题。
此规则的一个部分例外是回退文件名 EFI/BOOT/bootx64.efi
(或其他CPU类型的变体)。这是EFI在没有其他可用的情况下尝试启动的文件名。它最初是用于可移动媒体,但现代EFI(几乎?)总是在硬盘的ESP上识别它。这可以是一个解决启动问题的有用工具,例如,如果您的固件忘记了它的常规启动条目 - 似乎已经发生在您身上。另请注意,许多EFI将Windows引导加载程序EFI/Microsoft/Boot/bootmgfw.efi
视为后备文件名。这可以保持Windows启动,即使计算机的固件设置已经搞砸了 - 但当然这对Linux用户没有帮助。
我注意到Windows分区设置了Boot标志,我不确定它是不是这样的?
AFAIK,Windows忽略GPT磁盘上的“引导标志”。另外,请注意Windows工具报告的“引导标志”,其显示的屏幕截图parted
和Linux中报告的“引导标志” 和GParted在Linux中完全不同!(在Linux工具中,这个“标志”与GPT磁盘上的ESP类型代码同义。)
一个更直接的答案
简而言之,你遇到了我称之为启动的政变。有关此主题的更多信息,请参阅我的此页面。您可以使用EasyUEFI在Windows中更正它用于将Arch Linux条目恢复到引导顺序顶部的工具; 但是,您说您的固件的启动管理器显示没有特定于操作系统的条目。(您提到的整个磁盘条目可能会启动一个备用启动加载程序,或者可能在BIOS / CSM /传统模式下启动系统;我无法确定哪个没有看到该条目,也许可以尝试查看使用它时会发生什么。这告诉我你的引导妙招是由固件“完全忘记”其NVRAM条目引起的。这可能是因为操作系统中的错误,固件中的错误,用户错误,硬件故障等。最佳解决方案是使用创建新的EFI NVRAM条目efibootmgr
。有关此主题的更多信息,请参阅efibootmgr
Arch wiki中的条目。简而言之,您将使用这样的命令(取自Arch wiki):
# efibootmgr --create --disk /dev/sda --part 1 --loader /EFI/refind/refind_x64.efi --label "rEFInd Boot Manager"
您需要更改自己系统的磁盘ID,分区号,文件名和标签。您可以在以EFI模式启动的任何紧急Linux系统中键入此命令; 或者如果您可以启动主要安装(例如,通过在可移动磁盘上使用我的rEFInd启动管理器),您可以从主安装中键入它。或者,您可以使用EasyUEFI创建等效条目。
如果您的系统经常忘记其NVRAM条目,那么使用回退文件名可能会更好; 然而,既然你是双启动Linux和Windows,这可能很尴尬 - 如果你的固件更喜欢Windows启动加载器条目而不是官方的后备文件名,那么让它可靠地工作的唯一方法就是“劫持” Windows引导加载程序,将Linux引导加载程序或引导管理器放在其位置,然后从其他位置启动Windows工具。Windows最终可能会将自己的引导加载程序重新安装到该位置,从而使您回到原来的位置。这是我强烈建议人们将有缺陷的计算机退回商店的原因之一,这些计算机会忘记或忽略他们的NVRAM启动条目,以便在可能的情况下退款。不幸的是,它通常是不可能的,