如何让GRUB成为UEFI笔记本上的默认启动程序而不是Windows Boot Manager?

我有一台HP Pavilion Touchsmart笔记本,自带Windows 8。我已经升级到了8.1,现在我想把Ubuntu发行版和Windows 10进行双启动。当与Windows 8.1双启动时,Windows启动管理器总是优先考虑,即使安装了GRUB。我需要做什么才能让GRUB成为默认的引导程序,而不是Windows引导管理器?

解决办法

这是我在StackExchange网站上发过的最长的帖子,但这个过程需要大量的解释和对细节的关注。这对有关的硬件来说也有些特殊,这需要更多的解释。 在经历了很多令人头疼的事情,两次意外的硬盘重启,以及对惠普错误的固件实现的很多挫折之后,我终于让Xubuntu和Windows 10很好地并排运行。我是在Windows 10下完成的,但它也应该在Windows 8.1下工作。这两个较新的操作系统都使用了新的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,不要担心--它可能做的最糟糕的事情是通过向MBR写东西而使你的EFI启动项变得混乱。我们将在第4步中进行清理。说到MBR,要像避免瘟疫一样避免它。主引导记录(Master Boot Record)是传统BIOS固件中使用的引导程序列表,存储在硬盘的引导分区(或者,如果由Windows编写,则存储在哪个分区的前面)。它的目的是列出硬盘上的操作系统,并告诉固件哪一个先被启动。这与惠普的UEFI固件不能很好地工作。似乎如果对MBR做了任何修改,惠普的UEFI固件就会感到困惑,并运行回Windows启动管理器,这将完全绕过GRUB。 你需要什么?

  • 一个活的USB或者安装光盘,里面有你喜欢的Ubuntu发行版。
  • 你的Windows操作系统的安装介质。如果你从Windows 8.1升级,你可以不下载Windows 10的3+GB .iso文件--有一个网络安装程序可以在安装时下载它--但是,对于这种方法,你需要将.iso文件解压到CD或USB驱动器上。这也是为将来准备的一个好主意,所以你不妨现在就创建它。由于这个问题是关于与UEFI系统的双重启动,你需要64位操作系统
  • 确保你有你的产品密钥,否则你将无法升级/安装。
  • 可选的,但强烈建议。一个足够大的驱动器,以备份你当前的Windows文件。
  • 在你的硬盘上有足够的空间容纳两个操作系统,一个启动分区(只有200MB),以及一个Linux交换分区(通常与你的物理内存大小相同)。 第一步:做一个备份

    备份所有你不希望丢失的Windows文件和文件夹。只要你有足够的自由硬盘空间给你的新Ubuntu分区,这个过程应该不会干扰到Windows文件。不过,应该是一个有风险的词。 Windows 8.1有一个"制作恢复盘"的工具,但我发现在恢复我用它制作的备份时,它毫无用处,也无法发挥作用。保存你不想失去的文件的最直接方法是打开Windows资源管理器,并将它们复制到备份磁盘。这需要很长时间,但这是值得的。 第2步:禁用快速启动,并关闭你的电脑

    *你需要以管理员身份登录才能这样做。 在安装GRUB之前禁用快速启动是非常重要的,因为Ubuntu安装程序是否能检测到Windows的存在取决于Windows在启动分区中的表现。在正确禁用快速启动后,应该可以检测到它。检测将在第4步中介绍。 Windows 8、8.1和10使用了一种叫做 "快速启动 "的花哨的新东西,它告诉你的固件加载一个特殊的引导程序,使系统快速恢复到关机前的状态。很酷,是吧?嗯,因为它改变了EFI系统的下一个启动选项,所以在你安装GRUB时必须禁用这一功能。这可以通过以下方式完成。 1.打开控制面板(Windows+X->在Windows 8+中从桌面上的控制面板(显然,微软憎恨电力用户,所以在开始菜单中搜索"控制面板"是现在打开它的最快途径) 2.导航到电源选项 3.点击"选择电源按钮的作用&quot。 4.点击"更改当前不可用的设置&quot。 5.确保底部的"打开快速启动(推荐)"的方框没有被选中。 更详细的说明可以在这里找到。你可以在安装GRUB后重新启用快速启动,它似乎不会对Ubuntu/GRUB的启动造成任何问题。只要确保在安装过程中禁用它就可以了。 在你禁用快速启动后,关闭你的电脑。由于快速启动被禁用,Windows将进行完全关机,而不会改变固件EFI管理器中的下一次启动选项。(俗话说。Windows不会告诉你的惠普系统在下次开机时启动它的快速启动文件,所以它将使用EFI启动管理器的列表,因为它应该这样做。GRUB会把自己放在这个列表的第一位)。 第3步:用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交换分区腾出空间。使用gparted's resize/move选项来做这个。Ubuntu至少需要5GB,Linux-swap分区应该至少是物理内存的一半,所以调整windows分区的大小以腾出足够的空间。gparted会警告你潜在的数据损失--只要你不把分区缩小到正在使用的空间,缩小分区应该不会破坏或损坏任何数据。
  • 如果从头开始安装两个操作系统(同样,这将抹去你所有的数据),微软说你需要至少20GB的64位操作系统,所以这个分区需要至少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交换分区,记得要为它留出空间。它应该被格式化为ext4。如果你出于某种原因喜欢ext2或ext3也可以。
  • 如果从头开始安装,按照上面的描述制作Ubuntu分区。确保它被格式化为ext4、ext3或ext2。这将允许Ubuntu使用它,但不让Windows 10安装程序识别它,这将导致它默认为你在步骤3中制作的FAT32分区,它可以读取。 4.4. 可选的,但建议:一个linux-swap分区至少是你的物理内存的一半是一个好的开始,但我建议阅读细节。我有8GB的内存和1TB的硬盘,所以我把这个分区的大小和我的物理内存一样。 第四步:先安装Ubuntu

    无论是从现有的Windows操作系统升级到Windows 10,还是将Windows 10和Ubuntu发行版同时安装到新的或新分区的硬盘上,先安装Ubuntu要容易得多。Ubuntu使用GRUB 2作为它的引导程序,它以EFI引导程序的方式做事。Windows 10使用Windows Boot Manager,它的工作方式是......嗯,Windows的工作方式......。如果你先安装Windows,你很可能无法启动Ubuntu,如果在启动过程中不按住一个特殊的键来停止Windows Boot Manager的加载,因为Windows Boot Manager不尊重GRUB,当它被添加到它的启动装载程序列表中。因此,不如先安装Ubuntu和GRUB,然后在GRUB中为Windows启动管理器添加一个条目。 第4.1步。清理旧的EFI条目(可选)请注意这里。删除错误的东西会导致巨大的问题。 在安装Ubuntu之前,我们要确保过去安装的操作系统的幽灵不会在未来回来纠缠我们。在UEFI系统中,操作系统使用EFI(可扩展固件接口)文件来告诉固件:"嘿,我存在。当一个新的操作系统被安装时,它会在EFI启动管理器的列表中添加一个条目,给它一个唯一的条目编号,并告诉EFI启动管理器它的EFI文件在哪里(Windows注册了几个不同的EFI文件--一个用于常规启动,一个用于恢复启动,一个用于快速启动--可能更多,取决于你的固件和操作系统版本)。EFI引导管理器还跟踪引导顺序:一个条目编号的列表,指定先引导什么。如果你一直在使用EasyBCD、bcdedit、Windows、启动修复或恢复工具、Linux操作系统的启动修复,甚至如果你更新了Windows或重新安装了它,很有可能你的EFI条目列表现在有一些重复。至少,我的情况是这样的。在这里有重复的条目会阻碍你的启动过程,因为固件会在过时的或错误的文件条目中进行筛选,直到它找到一个可以工作的启动程序。这也可能导致启动循环,即启动程序A将固件指向启动程序B,而启动程序B又将其指向A,然后事情就开始变得非常、非常长了。 总之,要查看你的EFI条目列表,看看有什么需要清理的,可以使用efibootmgr包和你的Live CD/USB。你需要在终端用 "sudo apt-get install efibootmgr "安装它,然后用 "sudo efibootmgr "运行它。默认情况下,你会得到一个条目列表,看起来像这样。 ![efibootmgr输出的EFI启动管理器条目列表图片][6] 。 当我第一次使用这个工具时,在摆弄了EasyBCD和bcdedit试图让东西以正确的顺序启动后,我在这里有超过100个条目,其中大部分是重复的。 如果你的启动管理器列表不是太杂乱,或者你不愿意决定哪些可以删除,哪些不应该删除,就跳到步骤4.2.。 要清除任何你不需要的条目,使用efibootmgr -b -B,其中hex_number被引导条目列出的数字取代。因此,要删除上图中的 "USB驱动器(UEFI)"条目(编号为Boot2001),我会使用 "sudo efibootmgr -b 2001 -B"。你会注意到,我留下了一些重复的条目(所有3000多个编号的条目)。你可以使用efibootmgr和不同的选项来查看这些条目的一些其他属性,例如它们所指向的文件路径。这些条目看起来是重复的,但它们都指向不同的文件,被我的惠普笔记本电脑用来更新其BIOS。请小心你删除的东西。你也可以使用 efibootmgr 来改变它所显示的 BootOrder。参见man page以了解关于这个有用工具的更多信息。 第4.2步:安装Ubuntu**。 在你清理了EFI启动管理器的条目之后,如果你选择这样做的话,现在终于可以安装Ubuntu了。在加载了活CD/USB后,从启动器菜单中选择安装选项,或者在登录后从桌面上启动它。在安装程序的第一页中选择你的选项。第二部分将看起来像这样:(我使用的是Xubuntu 14.04,所以你的安装程序可能有所不同,但选项应该非常相似。) 。 如果你的安装程序没有检测到你的Windows安装(像我一样),你需要选择 "其他东西 "选项。从那里,你会得到一个屏幕,看起来类似于你用来设置分区的gparted菜单。只需选择你制作的分区,并通过选择一个分区并点击"改变"将它们分配到正确的挂载点。

  • 如果你要从头开始安装两个操作系统,做同样的事情。不要使用自动安装选项。你需要确保Ubuntu被安装在ext2/ext3/ext4分区,而不是**FAT32的Windows分区。 第5步:更新或安装Windows第二版

    你应该有一张Windows 10的安装盘。在你开始安装之前,确保你附近有你的产品密钥,否则你将无法安装/升级。当你启动到安装光盘/USB时,安装程序相当简单。对我来说有点太简单了--唯一的按钮是"安装Windows 10"或类似的东西,而Windows 8、8.1和10因其幕后安装而臭名昭著,它只是说"我们正在准备事情",并没有提供关于它实际上对你的系统做什么的细节。如果你到目前为止一直遵循这些说明,应该可以定期开始安装。

  • 如果你从Windows 8或Windows 8.1升级,你不应该在安装过程中做任何特别的事情。通过(非常长的)安装,并继续进行第6步。
  • 如果你正在进行新的安装,安装程序会问你想在哪里安装Windows 10。确保你选择你在第2步中制作的FAT32分区,而不是其他分区,否则该分区将被擦除和格式化。因为Ubuntu已经安装了,Windows 10应该尊重启动分区,不会重新格式化它。将垃圾条目从EFI引导管理器的列表中清理出来,也会释放出200MB的小引导分区的空间,减少Windows感到困惑和愤怒并为自己清除整个东西的机会。 第6步:更新并(可选择)定制GRUB

    在安装或升级到Windows 10后,你需要重新启动Ubuntu以更新GRUB,使它在其列表中包括Windows Boot Manager。在你这样做之前,再次禁用快速启动。这与你在第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用来编译grub.cfg的os-prober脚本,它告诉grub的EFI文件要包括哪些条目,使用什么颜色,等等。os-prober脚本应该能识别Windows Boot Manager,并自动将其添加到列表中。 你可以选择安装Grub Customizer来改变菜单项的顺序,改变GRUB菜单的行为、颜色和背景。你可以用 "sudo apt-get install grub-customizer "从终端安装它,然后运行 "sudo grub-customizer"。 在与Windows操作系统共享的UEFI系统上使用GRUB时,不要安装到MBR。一些教程将使用Grub Customizer'文件菜单下的"安装到MBR"选项列为一个关键步骤。在大多数UEFI系统上,你不应该**这样做。MBR(主引导记录)是为BIOS固件设计的,并且在某种程度上仍然被Windows引导加载器使用。当GRUB已经在EFI条目列表中时,把它添加到MBR中,会引起很多麻烦。 如果你需要确保GRUB是启动顺序列表中的第一个条目(也就是说,如果Windows总是在启动,即使你做了所有的事情),使用efibootmgr(见步骤4.1)来查看/编辑EFI管理器的启动顺序。 注意事项

    我完全没有提到安全启动,因为它通常不会影响Ubuntu的安装。许多双启动教程都提到了禁用它,但对于目前的64位安装程序来说,这通常是不必要的。然而,每台电脑都是不同的,而且安全启动是相当新的(2012年),所以不同的固件可能会实现不同的东西。例如,我的惠普固件版本包括一个"legacy boot"选项,它禁用安全启动,并将安装的操作系统视为BIOS固件:有些人建议在安装双启动时启用这个选项。在我的系统上以传统启动模式安装Ubuntu时,GRUB无法将自己添加到EFI条目列表中,所以它能做的就是将自己添加到MBR中,而Windows Boot Manager可以完全控制它。Windows Boot Manager需要进行大量的调整才能显示条目列表,而在所有这些调整之后,它只能启动Windows条目,使得GRUB在我每次开机时不手动选择EFI文件就无法使用。 参见这里了解更多关于Ubuntu和安全启动和传统启动的信息,以及关于UEFI和BIOS安装之间的区别的信息。

评论(26)

我不想重复一个可能违反政策的帖子,所以我将链接我对这个问题的回答。简而言之,我有一台三星笔记本电脑,已经安装了Windows 10,我正在尝试安装linux的多个实例;Ubuntu 12.04、14.04和16.04。我使用了Boot-Repair,并在我的Setup BIOS中改变了Boot Priority,结果是先加载了一个功能性的,但混乱的GRUB用户Michael Hoffmann的回答对在空白驱动器上安装以及如何清理GRUB提供了很好的解释,但我不想删除我的Windows 10安装。

详细的解释可以在我的帖子这里中找到。

评论(1)

对于上述问题,有一个更简单的解决方案。

1.在开机时按F10进入高级BIOS设置。 2.2. 在 BIOS 启动顺序设置中,启用 Legacy Boot Order,这将同时启用 UEFI 和 Legacy Boot Order。 3.3. 将启动延迟(Boot Delay)增加到5秒,将在启动时提供一些选择操作系统的时间。
4.4. 保存BIOS设置并退出。 5.5.在下次启动时,你会被问到启动选择选项。按F9进入并选择适当的启动选项(Windows操作系统启动管理器或Ubuntu)。

评论(2)