如何在UEFI HP笔记本电脑上双启动Windows 10和Ubuntu?

我有一台Windows 8附带的HP Pavilion Touchsmart笔记本电脑。我已升级到8.1,现在我想用Windows 10双启动Ubuntu发行版。当使用Windows 8.1进行双启动时,Windows启动管理器总是如此即使在安装GRUB之后,也优先考虑。 要使GRUB成为默认的引导加载程序而不是Windows引导管理器,我需要做什么?

这是我在StackExchange网站上发布的最长的post,但这个过程需要大量的解释和对细节的关注。 它也有点特定于有问题的硬件,这需要更多的解释。

经过很多头痛,两次意外的硬盘重新格式化,以及惠普有缺陷的固件实现的许多挫败感,我终于让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,请不要担心 – 它可能做的最糟糕的事情是通过向MBR写入内容来搞乱您的EFI启动条目。 我们将在第4步清理它。说到MBR,避免像瘟疫一样。 主引导记录是传统BIOS固件中用作存储在引导分区中的引导加载程序列表(或者,如果由Windows编写,则在您的硬盘驱动器中的任何分区中)。 这是为了列出硬盘驱动器上的操作系统,并告诉固件首先启动哪个操作系统。 这与HP的UEFI固件不兼容。 似乎如果完成任何MBR修改,HP的UEFI固件会混淆并运行回Windows启动管理器,这将完全绕过GRUB。

你需要什么:

  • 带有首选Ubuntu发行版的现场USB或安装CD。
  • 适用于Windows操作系统的安装介质。 如果您从Windows 8.1升级,则可以在不下载完整的3+ GB .iso for Windows 10的情况下进行升级 – 有一个Web安装程序可以在安装时下载它 – 但是,对于此方法,您需要提取.iso到CD或USB驱动器。 将它放在未来也是一个好主意,所以你现在也可以创建它。 由于这个问题是关于UEFI系统的双启动,因此您需要64位操作系统。
    • 确保您拥有产品密钥,否则您将无法升级/安装。
  • 可选,但强烈推荐 :一个足以备份当前Windows文件的驱动器。
  • 硬盘驱动器上有足够的空间用于操作系统,启动分区(仅200 MB)和Linux交换分区(通常与物理RAM大小相同)。

第1步:进行备份

备份您不想丢失的所有Windows文件和文件夹。 只要您有足够的可用硬盘空间用于新的Ubuntu分区,此过程不应干扰Windows文件。 不过,应该是一个冒险的话。

Windows 8.1有一个“制作恢复磁盘”工具,但是当我恢复使用它制作的备份时,我发现它没用,也没用。 保存您不想丢失的文件的最直接方法是打开Windows资源管理器,然后将它们复制到备份磁盘。 它需要永远,但它是值得的。

步骤2:禁用快速启动,并关闭计算机

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

在安装GRUB之前禁用快速启动非常重要,因为Ubuntu安装程序是否可以检测到Windows的存在取决于Windows在启动分区中如何表示自身。 正确禁用快速启动后,应检测到它。 检测将在步骤4中介绍。

Windows 8,8.1和10使用这种名为Fast Startup的新function,它告诉您的固件加载一个特殊的引导加载程序,可以非常快速地将系统恢复到其关闭前的状态。 很酷,对吧? 好吧,因为它更改了EFI系统的next-boot选项,所以在安装GRUB时必须禁用此function。 这可以通过执行以下操作来完成:

  1. 打开控制面板(Windows 8+中桌面上的Windows + X->控制面板)
  2. 导航到“电源选项”
  3. 点击“选择电源按钮的function”
  4. 点击“更改当前不可用的设置”
  5. 确保选中底部显示“打开快速启动(推荐)”的框。

更详细的说明可以在这里找到。 您可以在安装GRUB后重新启用Fast Startup,并且似乎不会导致Ubuntu / GRUB引导出现任何问题。 只需确保在安装过程中禁用它。

禁用快速启动后,请关闭计算机。 由于禁用了快速启动,Windows将完全关闭,而不是更改固件的EFI管理器中的next-boot选项。 (Layman的条款:Win​​dows不会告诉你的HP系统在下次打开时启动它的Fast Startup文件,因此它将使用EFI启动管理器列表,因为它应该.GRUB将首先放在此列表中。)

第3步:使用gparted设置分区

在安装Ubuntu之前,您需要使用Live CD / USB为其创建单独的分区。 这样,它*不会覆盖Windows。

*确保你有备份。 不保证 – 这取决于Windows决定在您的启动分区中做什么,它也可能取决于您使用的是哪个Ubuntu版本/发行版 – 我还没有全部使用它们。

要制作分区,您需要启动到实时CD / USB,然后打开gparted。 有很多关于使用gparted的教程,这很容易弄明白,所以我将把具体细节留给你和互联网。

  • 您将需要4个分区:

    1. 启动分区。 如果您已经安装了Windows,则不需要执行任何操作 – 它应该已经是驱动器中的第一个分区之一。 有时,Windows还会在磁盘的开头创建另一个名为Recovery的小分区。 只留下这一点。

      • 如果您正在进行新安装,并且想要从头开始( 这将消除所有数据 ),请继续并删除驱动器上的所有分区,然后进行此分区。 它应该是第一个分区 ; 其格式应为FAT32 ; 它的大小至少应为200 MB 。 如果gparted有一个标记它的选项,只需将其命名为boot 。 如果没有标签选项,请不要担心。 但是,您必须在此分区上设置“boot”和“esp”标志; 如果没有它们,Ubuntu安装程序将忽略它并使用传统模式安装,Windows(10)将拒绝安装错误“我们无法创建新分区或找到现有分区”。 或不。 这似乎取决于Windows当天的感受……
    2. 一个Windows分区。 同样,如果您已安装Windows,则此分区显然应位于引导和恢复分区之后。 这是你想要的地方,但你需要调整它的大小,为你的Ubuntu分区和linux-swap分区腾出空间。 使用gparted的resize / move选项来执行此操作。 Ubuntu需要至少5 GB,并且linux-swap分区应该至少是物理RAM大小的一半,因此调整Windows分区的大小以便为此留出足够的空间。 gparted将警告您潜在的数据丢失 – 缩小您的分区不应该破坏或破坏任何数据,只要您不将其缩小到正在使用的空间。

      • 如果从头开始安装这两个操作系统( 再次,这将消除所有数据 ), Microsoft表示您需要至少20 GB用于64位操作系统,因此该分区需要至少20 GB 。 但是你可能想要的不仅仅是:我只是在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的网站建议至少5 GB 。 再说一次,你可能还想要更多。 如果您正在升级而不是全新安装两个操作系统,那么您应该能够在gparted中显示的新“未分配”空间中创建此分区。 使它尽可能大,但如果你打算使用一个,请记得为linux-swap分区留出空间 。 它应格式化为ext4。 ext2或ext3也应该有效,如果您出于某种原因更喜欢它们。
      • 如果从头开始安装,请按照上述说明进行Ubuntu分区。 确保将其格式化为ext4,ext3或ext2 。 这将允许Ubuntu使用它,但是让Windows 10安装程序无法识别它,这应该使它默认为您在步骤3中可以读取的FAT32分区。
    4. 可选,但建议: linux-swap分区 。 物理RAM至少一半是一个良好的开端,但我建议阅读细节 。 我有8 GB的RAM和1TB硬盘,所以我只是把这个分区和我的物理RAM大小相同。

第4步:首先安装Ubuntu

无论您是从现有的Windows操作系统升级到Windows 10,还是将Windows 10和Ubuntu发行版安装到新的或新重新分区的硬盘驱动器,首先安装Ubuntu要容易得多。 Ubuntu使用GRUB 2作为其引导加载程序,它以EFI引导加载程序的方式执行操作。 Windows 10使用Windows启动管理器,它执行操作……以及Windows执行操作的方式…如果您首先安装Windows,则在启动过程中如果不按住特殊键,您可能无法启动到Ubuntu停止加载Windows启动管理器,因为当Windows引导管理器添加到其引导加载程序列表时,它不会尊重它。 因此,首先安装Ubuntu和GRUB,然后为GRUB添加一个条目用于Windows启动管理器。

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

请小心这里。 删除错误的东西会导致很大的问题。

在安装Ubuntu之前,我们希望确保过去的操作系统安装的鬼魂不会再回来困扰我们。 在UEFI系统中,操作系统使用EFI(可扩展固件接口)文件告诉固件:“嘿,我存在。这是你可以找到我的地方。” 安装新操作系统时,它会在EFI Boot Manager列表中添加一个条目,该列表为其提供唯一的条目号,并告诉EFI Boot Manager EFI文件在哪里(Windows注册了几个不同的EFI文件 – 一个用于常规启动,一个用于恢复启动,一个用于快速启动 – 可能更多取决于您的固件和操作系统版本)。 EFI Boot Manager还会跟踪引导顺序:一个条目列表,用于指定首先引导的内容。 如果你一直在使用EasyBCD; BCDEDIT; Windows的启动修复或恢复工具; Linux操作系统中的boot-repair; 或者即使您已更新Windows或重新安装它,您的EFI条目列表现在也有可能存在重复。 至少,我的情况就是如此。 这里有重复项可能会导致启动过程陷入困境,因为固件会筛选出过时或错误的文件条目,直到找到可用的引导加载程序。 它还可以导致引导循环,其中引导加载程序A将固件指向引导加载程序B,将其指向A,然后事情开始需要非常长的时间……

无论如何,要查看您的EFI条目列表并查看需要清理的内容,请使用带有Live CD / USB的efibootmgr软件包。 您需要在终端中使用sudo apt-get install efibootmgr安装它,然后使用sudo efibootmgr运行它。 默认情况下,您将获得如下所示的条目列表:

来自efibootmgr输出的EFI Boot Manager条目列表的图片

当我第一次使用这个工具后摆弄EasyBCD和bcdedit尝试以正确的顺序启动东西时,我在这里有超过一百个条目,其中大多数都是重复的。

如果您的启动管理器列表不是太混乱,或者您不方便决定可删除的内容和不应删除的内容,请跳到步骤4.2。

要清除不需要的任何条目,请使用efibootmgr -b -B ,其中hex_number将替换为引导条目中列出的数字。 因此,要删除上图中的USB Drive (UEFI)条目(编号为Boot 2001 ),我将使用sudo efibootmgr -b 2001 -B 。 您会注意到我留下了一些重复项(所有3000多个编号的条目)。 您可以使用带有不同选项的efibootmgr来查看条目的其他一些属性,例如它们指向的文件路径。 这些条目看起来像重复,但它们都指向我的HP笔记本电脑用于更新其BIOS的不同文件。 你要删除的小心。 在这里更换东西可能非常困难或不可能。 您还可以使用efibootmgr更改它显示的BootOrder。 有关此有用工具的更多信息,请参见手册页 。

步骤4.2:安装Ubuntu

在清理EFI Boot Manager条目后,如果您选择这样做,最后是安装Ubuntu的时候了。 加载Live CD / USB后,从引导加载程序菜单中选择安装选项,或在登录后从桌面启动它。在安装程序的第一页上选择您的选项。 第二部分看起来像这样:(我使用的是Xubuntu 14.04,因此您的安装程序可能会有所不同,但选项应该非常相似。)

Xubuntu 14.04安装选项的屏幕截图

如果安装程序未检测到Windows安装(如我的),则需要选择“其他”选项。 从那里,您将获得一个类似于您用于设置分区的gparted菜单的屏幕。 只需选择您创建的分区,然后通过选择分区并单击“更改”将它们分配给正确的安装点。

  • 如果您从头开始安装两个操作系统,请执行相同的操作。 不要使用自动安装选项。 您需要确保Ubuntu安装在ext2 / ext3 / ext4分区, 而不是 FAT32 Windows分区。

步骤5:第二次更新或安装Windows

您应该拥有适用于Windows 10的安装盘。在开始安装之前,请确保附近有产品密钥,否则您将无法安装/升级。 当您启动到安装CD / USB时,安装程​​序非常简单。 有点太简单了我的安慰 – 唯一的按钮是“安装Windows 10”或类似的东西,Windows 8,8.1和10,因其幕后安装而臭名昭着,它只是说“我们是做好准备“,并没有提供有关它对您的系统实际做了什么的详细信息。 如果您到目前为止已按照这些说明进行操作,则可以定期开始安装。

  • 如果从Windows 8或Windows 8.1升级,则不必对安装过程执行任何特殊操作。 完成(非常长)安装,然后继续执行步骤6。

  • 如果您正在进行全新安装,安装程序将询问您要在哪里安装Windows 10.确保选择在步骤2中创建的FAT32分区,而不是另一个分区,或者将擦除和格式化该分区。 因为已经安装了Ubuntu,所以Windows 10应该尊重启动分区而不是重新格式化它。 清除EFI Boot Manager列表中的垃圾条目也可以释放微小的200 MB启动分区中的空间,从而减少Windows混淆和愤怒的可能性并清除整个事物。

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

安装或升级到Windows 10后,您需要重新启动到Ubuntu才能更新GRUB,因此它的列表中包含Windows Boot Manager。 在执行此操作之前,请再次禁用“快速启动”。 这与您在步骤2中的操作方式非常相似。控制面板和设置UI略有不同,但大多数选项仍然存在。

在再次禁用快速启动后,重新启动计算机。

如果Windows默认启动,则需要按住笔记本电脑的特殊键才能进入系统的固件菜单。 在我的HP Touchsmart上,该密钥是Esc。 其他常用键是F12,删除,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 apt-get install grub-customizer ,然后运行sudo grub-customizer

在与Windows操作系统共享的UEFI系统上使用GRUB时,请勿安装到MBR。 一些教程将其列为使用“文件”菜单下的Grub Customizer的“安装到MBR”选项的关键步骤。 您不应该在大多数UEFI系统上执行此操作。 MBR(主引导记录)专为BIOS固件而设计,在某种程度上仍由Windows引导加载程序使用。 将GRUB添加到MBR,当它已经在EFI条目列表中时,可能会导致大量毛球。 如果您需要确保GRUB是引导顺序列表中的第一个条目(即,如果Windows始终正在引导,即使您做的一切正确),请使用efibootmgr (请参阅步骤4.1)查看/编辑EFI Manager的引导顺序。

笔记

我根本没有提到安全启动 ,因为它通常不会影响Ubuntu的安装。 许多双启动教程都讨论了禁用它,但对于当前的64位安装程序,这通常是不必要的。 但是,每台PC都不同,安全启动相当新(2012),因此不同的固件可能会以不同的方式实现。 例如,我的HP固件版本包括“旧版启动”选项,该选项禁用安全启动并将已安装的操作系统视为BIOS固件:有些人建议启用此选项以安装双启动。 在我的系统上以遗留启动模式安装Ubuntu会阻止GRUB将自身添加到EFI条目列表中,因此它所能做的就是将自身添加到Windows启动管理器完全控制的MBR中。 Windows启动管理器进行了大量调整甚至显示条目列表,然后,它只会启动Windows条目,使GRUB无法使用,而无需在每次打开电源时手动选择其EFI文件。

有关Ubuntu和安全启动和传统启动的详细信息,请参阅此处 ,以及有关UEFI和BIOS安装之间差异的信息。

我不想复制可能违反政策的post,因此我会将此问题的答案链接起来。 总之,我有一台安装Windows 10的三星笔记本电脑,我试图用多个实例安装linux ; Ubuntu 12.04,14.04和16.04。 我在设置BIOS中使用了Boot-Repair并更改了Boot Priority ,这导致首先加载了一个function齐全但很混乱的GRUB 。 用户回答Michael Hoffmann提供了有关在空白驱动器上安装以及如何清理GRUB的良好解释,但我不想删除我的Windows 10安装。

详细解释可以在我的postHERE中找到。

我可以向你提出一个简单的问题,如果没有一个合法的解决方案解决了你的问题,请使用它。

由于Windows不断更改引导顺序,黑客攻击Windows会将Ubuntu grub识别为Windows引导文件,即bootmgfw.efi

第1部分:在Windows上访问EFI文件夹

以管理员身份打开cmd并安装EFI文件夹以访问它。 逐个执行以下命令。 下面我已将字母g分配给装载,确保在PC中指定未分配的字母。

 mountvol g: /s g: cd EFI\ 

您应该在EFI中看到Microsoft文件夹和Ubuntu文件夹。

第2部分:将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 

第3部分:卸载EFI文件夹

逐个执行以下命令。

 c: mountvol g: /d 

现在重新启动你的PC,你应该看到Ubuntu GRUB加载,它应该有一个选项Windows UEFI加载程序来启动Windows。

针对上述问题稍微简单一点的解决方案。

  1. 在启动期间按F10以进行高级BIOS设置
  2. 在BIOS Boot Order设置中启用Legacy Boot order,它将启用UEFI和Legacy Boot Order。
  3. 将引导延迟增加到5秒将在引导时间OS选择期间提供一些时间。
  4. 保存BIOS设置并退出。
  5. 在下次启动时,将询问您有关启动选择选项的信息。 按F9进入并选择相应的引导选项(Windows操作系统启动管理器或Ubuntu)

我找到了一个简单的解决方案,它适用于安装了Windows 10的惠普笔记本电脑(355 G2)

  1. 启动时按下逃生键
  2. 按F9键选择引导选项
  3. 选择不是 UEFI的USB选项(我的选项是列表中的底部)并按Enter键
  4. 然后,您将收到错误消息屏幕。 但是,您只需键入“live”即可试用操作系统或“live-install”并按Enter键安装它,所有应该游泳……