如何将GRUB设置为UEFI笔记本电脑上的默认引导加载程序,而不是Windows Boot Manager?

我有一台带有Windows 8的HP Pavilion Touchsmart笔记本电脑。我已经升级到了8.1版本,现在我想要在Windows 10上双启动Ubuntu发行版。当与Windows 8.1双启动时,Windows引导管理器总是优先启动,即使安装了GRUB也是如此。我需要做什么才能让GRUB成为默认的引导加载程序,而不是Windows引导管理器?
5个回答

这是我在StackExchange网站上发表的最长的帖子,但这个过程需要很多解释和细节的注意。它也与所讨论的硬件有些特定关系,需要更多的解释。
经过一番头痛,两次意外的硬盘重新格式化,以及对HP错误固件实施的大量挫败感,我终于成功地将Xubuntu和Windows 10并行运行得很好。我已经在Windows 10上做到了这一点,但在Windows 8.1上也应该可以。这两个较新的操作系统都使用了新(ish)的UEFI固件系统,而不是传统的BIOS系统,这就是大多数双启动混淆的地方。我从很多地方阅读了很多关于使用BIOS系统进行双启动的指导,它们把UEFI描述成只是一种不同类型的BIOS,或者是BIOS和操作系统之间的可选层。UEFI和BIOS并不是同一回事;UEFI不是BIOS,BIOS也不是UEFI。它们完全不同。在使用UEFI系统进行双启动时,有一些需要做出不同的操作。
首先,不要使用EasyBCD。我看到了很多过时的双重启动教程推荐EasyBCD,但它是设计用来与Windows 7和Windows Vista使用的传统BIOS固件配合工作的,而且它在较新的UEFI固件(Windows 8、8.1或10)上表现不佳。如果你已经尝试过EasyBCD,别担心-最坏的情况可能只是在EFI启动项中写入了一些内容以使其变得混乱。我们将在第4步中进行清理。说起MBR,像瘟疫一样避免它。主引导记录是在传统BIOS固件中使用的列表,用于存储在硬盘的启动分区(或者如果由Windows编写,则存储在硬盘的第一个分区中)中的引导程序。它的目的是列出硬盘上的操作系统,并告诉固件哪个应首先启动。这在HP的UEFI固件中并不奏效。似乎如果有任何MBR修改,HP的UEFI固件就会变得混乱,并返回到Windows Boot Manager,从而完全绕过GRUB。

你需要:

  • 一個帶有您首選的Ubuntu發行版的活動USB或安裝CD。
  • 用於您的Windows操作系統的安裝媒體。如果您從Windows 8.1升級,您可以在不下載完整的3+ GB .iso文件的情況下進行升級到Windows 10-有一個網絡安裝程序會在安裝時下載它-但是,對於這種方法,您需要將.iso文件提取到CD或USB驅動器中。同時,將其準備好以供將來使用也是一個好主意,所以最好現在就創建它。由於這個問題涉及到與UEFI系統雙啟動,您將需要64位操作系統。
    • 確保您擁有產品密鑰,否則您將無法升級/安裝。
  • 可選,但強烈推薦:一個足夠大的驅動器來備份您當前的Windows文件。
  • 硬盤上有足夠的空間容納兩個操作系統,一個引導分區(僅200 MB)和一個linux-swap分區(通常與物理RAM大小相同)。

第1步:進行備份

备份你不想丢失的所有Windows文件和文件夹。只要你有足够的硬盘空间来创建新的Ubuntu分区,这个过程就不会干扰Windows文件。不过,"应该"是一个冒险的词。

Windows 8.1有一个"创建恢复盘"工具,但我发现它在恢复我的备份时毫无用处和功能。保留你不想丢失的文件最直接的方法就是打开Windows资源管理器,将它们复制到备份磁盘上。这需要很长时间,但是非常值得。

步骤2:禁用快速启动,并关闭电脑

你需要以管理员身份登录才能进行此操作。

在安装GRUB之前,禁用快速启动非常重要,因为Ubuntu安装程序能否检测到Windows的存在取决于Windows在引导分区中的表示方式。如果快速启动被正确禁用,它应该被检测到。检测将在第4步中进行介绍。

Windows 8、8.1和10使用了一个新的高级功能,叫做快速启动。它会告诉固件加载一个特殊的引导程序,以非常快的速度将系统恢复到关机前的状态。很酷,对吧?但是,由于它会改变EFI系统的下一次启动选项,在安装GRUB时必须禁用此功能。具体操作如下:
  1. 打开控制面板(在Windows 8+中,可以通过按下Windows键+X,然后从桌面上选择“控制面板”来打开。)
  2. 进入电源选项
  3. 点击“更改电源按钮的功能”
  4. 点击“更改当前不可用的设置”
  5. 确保底部的“打开快速启动(推荐)”的复选框未被勾选

更详细的说明可以在这里找到。在安装GRUB期间,请确保禁用快速启动。安装完成后,您可以重新启用快速启动,似乎不会对Ubuntu/GRUB的启动造成任何问题。只需确保在安装过程中禁用它即可。

在禁用快速启动后,关闭计算机。由于禁用了快速启动,Windows将进行完全关机,并不会更改固件的EFI管理器中的下一次启动选项。(通俗来说:当下次打开时,Windows不会告诉您的HP系统启动其快速启动文件,而是使用EFI引导管理器的列表,正如它应该做的。GRUB将把自己放在这个列表的第一位。)
第三步:使用gparted设置分区
在安装Ubuntu之前,您需要使用您的Live CD/USB为其创建一个单独的分区。这样,它就不会覆盖Windows。
*确保您有备份。不能保证-这取决于Windows在您的引导分区上做了什么,并且可能还取决于您使用的Ubuntu版本/发行版-我没有使用过所有版本。
要创建分区,您需要启动到您的Live CD/USB,并打开gparted。有很多关于使用gparted的教程,而且很容易弄清楚,所以我将具体细节留给您和互联网。
你需要4个分区: 1. 引导分区。如果你已经安装了Windows,你不需要做任何事情-它应该已经是你驱动器中的第一个分区之一。有时Windows还会在磁盘的开头创建另一个名为“恢复”的小分区。不要管它。 - 如果你正在进行新安装,并且想从头开始(这将清除所有数据),请删除驱动器上的所有分区,然后创建此分区。它应该是第一个分区;格式应该是FAT32;大小至少为200MB。如果gparted有一个标签选项,请将其命名为“boot”。如果没有标签选项,不用担心。但是,你必须在此分区上设置“boot”和“esp”标志;否则,Ubuntu安装程序将忽略它并使用传统模式安装,而Windows(10)将因错误“我们无法创建新分区或找到现有分区”而拒绝安装。或者也可能不会。似乎取决于Windows当天的心情...
2. Windows分区。同样,如果你已经安装了Windows,这个分区显然应该在引导和恢复分区之后。这就是你想要的位置,但你需要调整它的大小以腾出空间给Ubuntu分区和linux-swap分区。使用gparted的调整/移动选项来完成这个操作。Ubuntu至少需要5GB,而linux-swap分区的大小应该是物理RAM大小的一半以上,所以调整Windows分区的大小以腾出足够的空间。gparted会警告你可能会丢失数据-缩小分区不应该破坏或损坏任何数据,只要你不将其缩小到正在使用的空间中。
- 如果从头安装两个操作系统(再次强调,这将清除所有数据),Microsoft建议64位操作系统需要至少20GB,所以这个分区至少需要20GB。但你可能希望更多:我刚刚在引导分区后的空间的一半用于Windows,另一半用于Ubuntu和linux-swap。如果你从头开始,这个分区需要格式化为FAT32。当你安装Windows时,它会将其格式化为NTFS。不要使用gparted来做这个;Windows的NTFS实现与gparted的实现不同,Windows可能无法识别该分区。在Windows 10安装程序中,你应该有选择将Windows 10安装在哪个分区的选项。如果它被格式化为FAT32,Windows应该能够看到它并在那里安装自己。如果你可以给这个分区加上标签,就把它命名为“Windows”。这样在Windows安装过程中会更容易。说到Windows安装程序-不要开始它。如果你同时安装Ubuntu和Windows而不是从8或8.1升级到10,那么先安装Ubuntu会更容易
3. Linux分区。与Windows分区一样,这个分区的大小可以有所不同,但Ubuntu的网站建议至少5GB。同样,你可能希望比这更多。如果你正在升级而不是进行全新安装两个操作系统,你应该能够在gparted中显示的新的“未分配”空间中创建此分区。根据需要设置大小,但记得留出空间给linux-swap分区(如果你打算使用它)。它应该格式化为ext4。如果你喜欢,也可以使用ext2或ext3。
- 如果从头安装,请按照上面描述的方式创建Ubuntu分区。确保它被格式

步骤4:首先安装Ubuntu

无论您是从现有的Windows操作系统升级到Windows 10,还是将Windows 10和Ubuntu发行版安装到新的或重新分区的硬盘上,首先安装Ubuntu会更加容易。Ubuntu使用GRUB 2作为其引导加载程序,它以EFI引导加载程序应有的方式进行操作。而Windows 10使用Windows Boot Manager,它以...嗯,Windows的方式进行操作...如果您先安装Windows,那么在启动过程中要想不加载Windows Boot Manager并启动Ubuntu,您可能需要按住一个特殊键,因为Windows Boot Manager在添加到其引导加载程序列表时不会尊重GRUB。所以,相反地,先安装Ubuntu和GRUB,然后在GRUB中添加一个条目用于Windows Boot Manager。

步骤4.1:清理旧的EFI条目(可选)

请务必小心。删除错误的内容可能会导致严重问题。

在安装Ubuntu之前,我们想确保过去的操作系统安装的幽灵不会在将来困扰我们。在UEFI系统中,操作系统使用EFI(可扩展固件接口)文件告诉固件:“嘿,我存在。你可以在这里找到我。”当安装新的操作系统时,它会向EFI引导管理器的列表中添加一个条目,该条目有一个唯一的编号,并告诉EFI引导管理器其EFI文件所在的位置(Windows为常规启动注册多个不同的EFI文件,一个用于恢复启动,一个用于快速启动-根据固件和操作系统版本可能会有更多)。EFI引导管理器还会记录启动顺序:一个包含条目编号的列表,指定首先启动什么。如果你一直在使用EasyBCD;bcdedit;Windows的引导修复或恢复工具;Linux操作系统中的boot-repair;或者即使你更新了Windows或重新安装了它,都有很大可能你的EFI条目列表现在有一些重复项。至少对我来说是这样。在这里有重复项会拖慢启动过程,因为固件要筛选过时或错误的条目,直到找到一个有效的引导程序。它还可能导致引导循环,其中引导程序A将固件指向引导程序B,然后又指向回A,然后事情开始变得非常非常耗时...
无论如何,要查看您的EFI条目列表并查看需要清理的内容,请使用带有您的Live CD/USB的efibootmgr软件包。您需要在终端中使用“sudo apt-get install efibootmgr”命令进行安装,然后使用“sudo efibootmgr”命令运行它。默认情况下,您将获得一个类似以下内容的条目列表:

Picture of EFI Boot Manager entry list from the output of efibootmgr

当我第一次使用这个工具时,在对EasyBCD和bcdedit进行调试后,我发现有超过一百个条目,其中大部分是重复的。

如果您的启动管理器列表不太混乱,或者您不确定哪些可以删除,哪些不能删除,可以直接跳到第4.2步骤。

清理不需要的条目,请使用efibootmgr -b <hex_number> -B,其中hex_number是引导项所列编号。因此,要删除上图中编号为Boot2001USB Drive (UEFI)条目,可以使用sudo efibootmgr -b 2001 -B。您会注意到,我保留了一些重复项(所有3000+编号的条目)。您可以使用efibootmgr以不同选项查看条目的其他属性,例如它们指向的文件路径。这些条目看起来像是重复的,但它们都指向我HP笔记本电脑用于更新其BIOS的不同文件。请小心删除内容。在此处替换事物可能非常困难或无法实现。您还可以使用efibootmgr更改显示的BootOrder。有关此有用工具的更多信息,请参阅手册页第4.2步:安装Ubuntu 在清理了EFI引导管理器条目之后(如果你选择这样做),现在是安装Ubuntu的时候了。使用你的Live CD/USB,从引导菜单中选择安装选项,或者在登录后从桌面启动它。在安装程序的第一页上选择你的选项。第二部分将会类似于这样:(我正在使用Xubuntu 14.04,所以你的安装程序可能有所不同,但选项应该相当类似。)

Screenshot of Xubuntu 14.04 install options

如果您的安装程序无法检测到您的Windows安装(就像我的一样),您需要选择“其他选项”。从那里,您将看到一个类似于您用来设置分区的gparted菜单的屏幕。只需选择您创建的分区,并通过选择一个分区并点击“更改”来将它们分配给正确的挂载点。
  • 如果您要从头开始安装两个操作系统,请执行相同的操作。不要使用自动安装选项。 您需要确保Ubuntu安装在ext2/ext3/ext4分区中,而不是FAT32的Windows分区。

第五步:先更新或安装Windows

你应该有一张Windows 10的安装光盘。在开始安装之前,确保你附近有产品密钥,否则你将无法安装/升级。当你启动安装光盘/USB时,安装程序非常简单。对我来说有点太简单了-唯一的按钮是"安装Windows 10"或类似的东西,而且Windows 8、8.1和10以其幕后安装而臭名昭著,它只是简单地显示"We're getting things ready",并没有提供关于它实际对系统做了什么的详细信息。如果到目前为止你都按照这些说明进行操作,那么正常开始安装应该没问题。
  • 如果你正在从Windows 8或Windows 8.1升级,安装过程中不需要做任何特殊操作。完成(非常长的)安装后,继续进行第6步。

  • 如果你要进行全新安装,安装程序会询问你想要安装Windows 10的位置。确保选择在第2步中创建的FAT32分区,而不是其他分区,否则该分区将被清除和格式化。由于Ubuntu已经安装,Windows 10应该尊重引导分区并不重新格式化它。清理EFI引导管理器列表中的垃圾条目还可以释放200 MB引导分区的空间,减少Windows混乱和清除整个分区的可能性。

第6步:更新和(可选)自定义GRUB

在安装或升级到Windows 10后,您需要重新启动到Ubuntu以更新GRUB,使其包含Windows引导管理器在其列表中。在执行此操作之前,请再次禁用快速启动。这与第2步中的操作非常相似。控制面板和设置界面可能有些不同,但大多数选项仍然存在。

在你重新禁用快速启动之后,重新启动你的电脑。

如果Windows默认启动,你需要按住笔记本电脑上的特殊键进入系统固件菜单。在我的HP Touchsmart上,该键是Esc键。其他常见的键有F12、Delete、F10...你的电脑手册应该能帮助你找到正确的键。从固件菜单中,引导到GRUB。应该有一个选项叫做“选择引导设备”或类似的内容,Ubuntu或者GRUB应该会列在其中。如果没有列出来,寻找一个从EFI文件引导的选项,并浏览到/EFI/ubuntu/grubx64.efi或(如果启用了安全启动)EFI/ubuntu/shimx64.efi。实际的文件路径可能因你的设置和引导分区的设置而有所不同,但文件名应该是相同的。选择其中一个.efi文件将引导至GRUB,然后你可以引导至你的Ubuntu发行版。登录后,打开终端并输入sudo update-grub。这将运行GRUB使用的os-prober脚本,编译grub.cfg文件,告诉grub的EFI文件要包括哪些条目,使用什么颜色等等。os-prober脚本应该能识别到Windows引导管理器,并自动添加到列表中。

可选地,您可以安装Grub Customizer来更改菜单项的顺序、更改GRUB菜单的行为、颜色和背景。您可以在终端中使用sudo apt-get install grub-customizer进行安装,然后运行sudo grub-customizer

在与Windows操作系统共享的UEFI系统上使用GRUB时,请勿安装到MBR。一些教程将其列为使用Grub Customizer的“Install to MBR”选项的关键步骤。在大多数UEFI系统上,您不应该这样做。MBR(主引导记录)是为BIOS固件设计的,并且在某种程度上仍然被Windows引导加载程序使用。当GRUB已经在EFI条目列表中时,将GRUB添加到MBR可能会导致许多问题。 如果您需要确保GRUB是启动顺序列表中的第一个条目(即使您已经正确执行了所有操作,Windows仍然启动),请使用efibootmgr(参见步骤4.1)查看/编辑EFI管理器的启动顺序。

注释

我一直没有提到“Secure Boot”,因为它通常不会影响Ubuntu的安装。很多双系统教程都会谈到禁用它,但对于当前64位安装程序来说,通常并不需要这样做。然而,每台计算机都是不同的,并且Secure Boot是相当新的(2012年),所以不同的固件可能有不同的实现方式。例如,我的HP固件版本包括一个“传统引导”选项,它禁用了Secure Boot,并将已安装的操作系统视为BIOS固件:有些人建议在双系统安装时启用此选项。在我的系统上以传统引导模式安装Ubuntu会阻止GRUB将自己添加到EFI条目列表中,因此它只能将自己添加到MBR中,而Windows引导管理器完全控制着MBR。为了显示条目列表,必须经过大量调整,即使所有这些都完成了,它也只会启动Windows条目,这导致GRUB无法使用,除非手动选择其EFI文件每次开机。

请参阅此处以获取有关Ubuntu、Secure Boot和传统引导的更多信息,以及关于UEFI和BIOS安装的一般区别的信息。


4必须使用GParted标记引导分区为引导+ESP标志;我没有这样做,因此Windows拒绝与Ubuntu共享磁盘(Ubuntu以传统引导模式安装)。一旦你用这些标志标记了一个分区,Ubuntu安装程序将自动使用它并以EFI模式安装。然后,Windows将不会因为“无法创建新分区”错误而拒绝在同一磁盘上安装。 - Adrian
谢谢。你介意把这些信息编辑到我的回答中吗?只要你觉得未来的读者不会错过它就可以了。 - Michael Hoffmann
1一个不同但相关的问题...下周的Windows更新有没有可能不会破坏Ubuntu安装,使其无法使用?我需要为我的女儿设置一台新的笔记本电脑,偶尔有些网站需要Windows,所以如果我能确保它不会破坏她99.999%的时间都在使用的Ubuntu,我想留一个Windows 10在那里。(我们家已经很多年没有Windows机器了。) - Marc
1那是个好问题,@Marc。在 Windows 更新后,我从来没有遇到过它破坏 GRUB 的问题。不过,我还没有进行过那个巨大的十一月更新,据说这几乎就是一个全新的操作系统安装。这显示出了我实际上使用 Windows 10 的程度 - Ubuntu 万岁 ;)。 请随时告诉我们这是否给您带来了任何问题,这样我们就可以及时更新这个答案。 - Michael Hoffmann
1出于好奇,如果我想将Ubuntu安装到自己的硬盘上,是否可以按照同样的过程进行?我的系统有两个120GB的固态硬盘和两个1TB的机械硬盘,所以理想情况下,我希望让Windows和Ubuntu各占一个。昨晚尝试了15.10版本,一开始似乎与我的双显示器设置更好地兼容,但GRUB没有列出Windows作为选项,并且从启动菜单中选择它的硬盘也无法引导Windows启动。使用了我的Windows USB修复了MBR或其他问题,现在Windows可以正常启动,但是Ubuntu不再被识别。:( - MattD
我从未尝试过使用多个驱动器,但无论你做什么,我绝对不会使用Windows来修复MBR。它永远不会尊重其他引导加载程序,如GRUB。在安装Ubuntu后,你是否运行了update-grub命令?默认情况下,Grub有一个名为os-prober的脚本,用于搜索系统(或至少是当前磁盘)中的其他操作系统。我不知道它是否会搜索其他磁盘,但如果它确实这样做,我敢打赌那些其他磁盘需要先挂载。尝试运行update-grub命令,然后如果还不起作用,请尝试挂载Windows引导磁盘并再次运行该命令。请随时告诉我最新情况! :) - Michael Hoffmann
6我见过的最好的答案之一。很快就会尝试在即将发布的Ubuntu上使用它。 - Mosh
14这是一份令人难以置信的指南。我理解之前提到的简化的愿望,但我认为对于这个问题并没有简单的答案。是的,你可以假设将其缩减为一个简单的“按照这样做,然后再按照那样做”的项目列表,但我认为这并不必要。处理驱动器必须非常小心谨慎进行;我们不希望普通用户试图按照一个项目列表进行操作,然后在中途失败。 - vaindil
1谢谢!但我不会说UEFI对Linux来说是可怕的。它提供的系统支持安全性和灵活性非常好。在这种情况下,UEFI只是惠普固件实现得非常错误。 - Michael Hoffmann
我有一台HP Ultrabook,已经使用Ubuntu近三年了,但我决定在上周日(2017年1月1日)进行双系统安装,即Ubuntu 16.04和Windows 10。这个安装是成功的,但每次启动时我仍然需要按下Esc键并选择Ubuntu,这真的很烦人,因为我的默认启动系统是Ubuntu而不是Windows,而我只在需要更新驱动程序(游戏或者与微控制器进行实验)时才使用Windows。 - grokkaine
@grokkaine,你试过使用“efibootmgr”来设置启动顺序了吗?你是安装到MBR还是开启了传统引导?这两者中的任何一个都可能会导致你的问题,取决于你的固件。我只在我的HP Pavilion上做过这个操作,但我想象它与Ultrabook类似。请参阅我的答案末尾的注释,以及第4.1步骤。 - Michael Hoffmann
太棒了,谢谢!我在预装的Windows之后安装了Fedora,它与GRUB一起工作,并将自己添加到/boot/efi中,在Windows引导管理器之前显示出来。 - eregon
3非常好的指导。但是我漏掉了一些重要的东西。如果你必须使用GParted从头开始创建表分区,非常重要的是要设置gpt模式,而不是msdos(GParted的默认设置) 如果分区是在msdos(MBR)模式下创建的,Windows 10将拒绝安装! - Juan Calero
请向用户解释某些选择的原因 - 硬盘格式非常重要,使用FAT32格式在Windows系统中将限制文件大小为4GB。如果有人需要访问更大的文件大小,请使用NTFS格式,但这将使从Windows系统中的Linux分区访问变得困难。文件分区非常重要,因为它无法在以后更改。 - George
@George 我觉得磁盘格式的选择比这个答案的范围更高级,而且这个答案已经很长了。但是如果你觉得可以在不让事情更加混乱的情况下完成,随时编辑答案。 - Michael Hoffmann
@MichaelHoffmann 我正在跟随这个精彩的教程安装Ubuntu 16.10在Windows 10旁边(都是全新安装),但不确定在“引导加载程序设备”中选择什么。不确定是安装到/dev/sda还是/dev/sda1(之前创建的“EFI”,引导,esp分区)。有什么提示吗?我目前正在尝试/dev/sda,并忽略关于引导分区的警告.. - The1nk
2@The1nk,我以前从未见过这种情况,所以它可能是16.10版本的新功能,或者与你的硬件有关。如果我是你(如果出了问题别怪我),我会选择/dev/sda并让Ubuntu自行处理。一般来说,Ubuntu会尽量与Windows友好相处,但Windows对其他操作系统都很刁钻。所以如果Windows正在使用那个引导分区,Ubuntu 应该会优雅地处理,并将自己添加到MBR中。再次强调,我以前没有处理过这个问题,所以不能确定。如果你同时进行全新安装,那么现在是一个很好的实验机会,记下你的结果,并在失败时再试一次! - Michael Hoffmann
@JuanCalero,很抱歉晚了几个月才回复你的评论,但这个问题可能是因为你尝试安装的磁盘大小。msdos和FAT32有一个限制...2TB(不要引用我),而GPT可以处理天文数字级别的存储容量。 - Michael Hoffmann
1@MichaelHoffmann 无论是/dev/sda还是/dev/sda1都没有起作用...我重新开始,让Windows按照自己的方式处理硬盘的一部分,然后使用Ubuntu对剩余的部分进行分区并安装到/dev/sda2(EFI)..但是还是不行。我还在调试中..谢谢你的帮助! - The1nk

我有一台已经安装了Windows 10的三星笔记本电脑,我想要安装Linux并创建多个实例;Ubuntu 12.04、14.04和16.04。我使用了Boot-Repair并在BIOS设置中更改了启动优先级,结果是GRUB加载变得混乱但是还能正常工作。用户Michael Hoffmann在他的回答中提供了关于在空白驱动器上安装以及如何清理GRUB的良好解释,但是我不想删除我的Windows 10安装。
详细的解释可以在我的帖子中找到。

我可以给你介绍一个简单的解决办法,如果正规的解决方案都没有解决你的问题,可以试试这个方法。
由于Windows不断改变启动顺序,这个方法是欺骗Windows将Ubuntu grub识别为Windows的引导文件,即bootmgfw.efi

第一部分:访问Windows上的EFI文件夹

以管理员身份打开cmd并挂载EFI文件夹以访问它。逐个执行以下命令。下面我将挂载分配了字母g,请确保在您的电脑上分配一个未使用的字母。
mountvol g: /s
g:
cd EFI\

你应该在EFI文件夹中看到一个Microsoft文件夹和一个Ubuntu文件夹。
第二步:将grubx64.efi从Ubuntu复制到Microsoft\Boot\,并重命名为bootmgfw.efi。
首先备份bootmgfw.efi文件。
cd Microsoft\Boot\
rename bootmgfw.efi bootmgfw_.efi

现在复制并重命名。
copy g:\EFI\ubuntu\grubx64.efi g:\EFI\Microsoft\Boot\
rename grubx64.efi bootmgfw.efi

第三部分:卸载EFI文件夹
逐个执行以下命令。
c:
mountvol g: /d

现在重新启动您的电脑,您应该会看到Ubuntu GRUB加载界面,其中应该有一个选项Windows UEFI loader,可以用来启动Windows。

这个方法是可行的,但是Windows更新可能会替换.efi文件,所以有时候可能需要重新操作一下。感谢您的贡献! - Michael Hoffmann
1是的,一些 Windows 更新确实会替换掉 .efi 文件,所以如果你不经常使用 Windows 的话,最好的做法是禁用本地服务中的更新功能,然后在你觉得需要时再进行 Windows 更新,并重复上述步骤。 - Envy
这个方法有效,但是现在我该如何重新启动回到Windows系统呢?现在它直接启动到Linux系统了。请给予指导。 - martti d
@marttid grub应该显示Windows选项。确保在Microsoft引导文件夹中存在'bootmgfw_.efi'文件。 - Envy
1或者按照这里建议的方式,使用一条命令bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi - newandlost
@Envy 你救了我的命。你的方法有效。我甚至重新安装了Win10和Ubuntu,为了让GRUB出现。之前尝试过引导修复,但仍然直接启动Windows。现在我有了GRUB,太棒了 :)顺便说一下,我的系统和操作系统都是以UEFI模式运行的,也就是GPT分区。 - La Corazón
似乎 grub 菜单中的 Windows Boot Manager 项目会循环回显示 grub 菜单。因此,我将 /boot/grub/grub.cfg 中的 Windows Boot Manager 项目复制到了 /etc/grub.d/40_custom 中——将标签更改为“Windows 10”,并将 bootmgfw.efi 更改为 bootmgfw_.efi——然后执行 sudo update-grub 命令。现在,在使用 Ubuntu 20.04 后重新启动会显示 grub 菜单。现在可以从 grub 菜单中选择 Ubuntu 或 Windows 10。***但是,在使用 Windows 10 后重新启动会显示“没有可用的引导设备”——当发生这种情况时,再次按下 Ctril-Alt-Del 后重新启动会显示 grub 菜单。【Dell Inspiron 660】 - igouy

上述问题的一个稍微简单的解决方案。
1. 在启动过程中按下 F10 键,进入高级 BIOS 设置。 2. 在 BIOS 启动顺序设置中启用传统启动顺序,这将同时启用 UEFI 和传统启动顺序。 3. 将启动延迟增加到 5 秒,以便在启动时有一些时间进行操作系统选择。 4. 保存 BIOS 设置并退出。 5. 下次启动时,您将被要求选择引导选项。按下 F9 进入并选择适当的引导选项(Windows 操作系统引导管理器或 Ubuntu)。

1我猜那算是一种解决方案,但它并不是大多数人在谈论双启动时所期望的用户友好的GRUB引导系统。每次启动计算机都需要进入固件菜单,这样很容易出错,应该尽量避免。启用传统引导还需要禁用安全引导(至少在我的固件上),这可能会使系统更容易受到固件注入的攻击-任何陌生人都可以将带有自制恶意操作系统的USB插入您的计算机并在几秒钟内启动它。 - Michael Hoffmann
1至少在我的情况下,我发现这个解决方案比方案1更加用户友好和快速,并且可以绕过原本限制双启动的Windows UEFI引导模式。是的,确实这个解决方法适用于那些能够启用传统引导并且能够控制自己的电脑/笔记本不被陌生人接触以及知道自己在做什么的人群。此外,许多人希望在安装/升级到Windows 10之后使他们的电脑支持双启动,而他们可能没有足够的资源或时间来使用方案1所需的方法。 - vishal yadav

我找到了一个更简单的解决方案,适用于安装了Windows 10的HP笔记本电脑(355 G2)。
1. 在启动时按下Esc键。 2. 按下F9键进入引导选项。 3. 选择不是UEFI的USB选项(在我的电脑上是列表中的最后一项),然后按Enter键。 4. 然后会出现一个错误消息屏幕。但是,你只需要输入'live'来尝试操作系统,或者输入'live-install'并按Enter键进行安装,一切都应该顺利进行...

你能找出你正在使用的固件版本吗?如果安装现在按预期进行,那太好了,但可能只适用于特定型号。也许固件更新可以简化我的型号的过程。我将重新安装两个操作系统,以便重新排列分区,并尝试不同的发行版,计划在本周内完成。我原打算使用我的指南,但如果你的固件版本与我的不同,我可能会先尝试升级。 - Michael Hoffmann
是的,安装和双启动似乎完美运行。我不确定如何准确找到BIOS/主板的固件版本(如果这是你想要的)。我尝试了"sudo dmidecode",但它提供了比我需要的更多信息... - Amphibio
如果您在启动过程中按下ESC键,应该会有一个用于BIOS设置或固件设置的选项。那里应该会有一个关于或类似的选项。 - Michael Hoffmann
1好的,BIOS版本为F.10。计算机的“出生日期”是2015年,出厂安装的操作系统是Windows 7,如果有任何差别就是这个。 - Amphibio
嗯,那是用于在BIOS模式下启动Live USB的方法,而这里是关于UEFI模式,并且有一个先启动Grub的双重引导系统。 - RoundDuckMan

  • 相关问题