笔记本电脑似乎不再启动到EFI分区 - 与Win 10一起使用Arch的双启动


0

前段时间我在戴尔XPS15上安装了Arch Linux和Windows 10,一切似乎都运行正常,但最近我的笔记本电脑突然直接启动进入Windows并跳过systemd-boot菜单。

我创建了一个可启动的Arch USB并查看了EFI和Arch分区,一切看起来都没有改变,我已经尝试在BIOS设置中查找启动序列选项,唯一的选择是SSD作为一个整体,我无法选择特定的分区来启动。

有谁知道可能导致这种突然变化的原因是什么?有没有人发生过类似的问题,有谁知道如何解决这个问题?

这是我的Windows磁盘管理器的屏幕截图,我注意到Windows分区设置了Boot标志,我不确定它是否应该是这样的?它有帮助吗?

截图


这听起来与我发生的情况类似; 请参阅Rod Smith的评论:superuser.com/q/1200038/247729 ; 我也在运行Arch,虽然我正在使用rEFInd,而不是systemd-boot
Shade

Answers:


0

背景资料

我已经尝试在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。有关此主题的更多信息,请参阅efibootmgrArch 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启动条目,以便在可能的情况下退款。不幸的是,它通常是不可能的,


0

我想出了这个问题,我在systemd-boot菜单中选择了默认的EFI加载器,并且由于某种原因改变了引导到我的SSD加载的efi文件。我用以下步骤修复它:

  1. 在可启动USB上启动到Arch
  2. 挂载我的EFI分区
  3. 使用bootctl查看每个当前引导条目
    • 这证实了我的想法:我的SSD有一个条目设置为加载我的Windows EFI文件
  4. 启动回可启动Arch USB上的菜单
  5. 选择了UEFI Shell v2
  6. 使用bcfg添加指向我的systemd-boot efi文件的新引导条目
    • (如何在这里执行此操作:https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface )
  7. 在BIOS中将新引导条目设置为引导顺序的顶部。

完成。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.