如何在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。 这可以通过执行以下操作来完成:
- 打开控制面板(Windows 8+中桌面上的Windows + X->控制面板)
- 导航到“电源选项”
- 点击“选择电源按钮的function”
- 点击“更改当前不可用的设置”
- 确保未选中底部显示“打开快速启动(推荐)”的框。
更详细的说明可以在这里找到。 您可以在安装GRUB后重新启用Fast Startup,并且似乎不会导致Ubuntu / GRUB引导出现任何问题。 只需确保在安装过程中禁用它。
禁用快速启动后,请关闭计算机。 由于禁用了快速启动,Windows将完全关闭,而不是更改固件的EFI管理器中的next-boot选项。 (Layman的条款:Windows不会告诉你的HP系统在下次打开时启动它的Fast Startup文件,因此它将使用EFI启动管理器列表,因为它应该.GRUB将首先放在此列表中。)
第3步:使用gparted设置分区
在安装Ubuntu之前,您需要使用Live CD / USB为其创建单独的分区。 这样,它*不会覆盖Windows。
*确保你有备份。 不保证 – 这取决于Windows决定在您的启动分区中做什么,它也可能取决于您使用的是哪个Ubuntu版本/发行版 – 我还没有全部使用它们。
要制作分区,您需要启动到实时CD / USB,然后打开gparted。 有很多关于使用gparted的教程,这很容易弄明白,所以我将把具体细节留给你和互联网。
-
您将需要4个分区:
-
启动分区。 如果您已经安装了Windows,则不需要执行任何操作 – 它应该已经是驱动器中的第一个分区之一。 有时,Windows还会在磁盘的开头创建另一个名为Recovery的小分区。 只留下这一点。
- 如果您正在进行新安装,并且想要从头开始( 这将消除所有数据 ),请继续并删除驱动器上的所有分区,然后进行此分区。 它应该是第一个分区 ; 其格式应为FAT32 ; 它的大小至少应为200 MB 。 如果gparted有一个标记它的选项,只需将其命名为
boot
。 如果没有标签选项,请不要担心。 但是,您必须在此分区上设置“boot”和“esp”标志; 如果没有它们,Ubuntu安装程序将忽略它并使用传统模式安装,Windows(10)将拒绝安装错误“我们无法创建新分区或找到现有分区”。 或不。 这似乎取决于Windows当天的感受……
- 如果您正在进行新安装,并且想要从头开始( 这将消除所有数据 ),请继续并删除驱动器上的所有分区,然后进行此分区。 它应该是第一个分区 ; 其格式应为FAT32 ; 它的大小至少应为200 MB 。 如果gparted有一个标记它的选项,只需将其命名为
-
一个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 要容易得多 。
- 如果从头开始安装这两个操作系统( 再次,这将消除所有数据 ), Microsoft表示您需要至少20 GB用于64位操作系统,因此该分区需要至少20 GB 。 但是你可能想要的不仅仅是:我只是在Windows的启动分区后使用了一半的空间,而在Ubuntu和linux-swap中使用了一半。 如果你是从头开始,这个分区需要格式化为FAT32 。 安装Windows时,它会将其格式化为NTFS。 不要用gparted这样做; Windows的NTFS实现与gparted的实现不同,Windows可能无法识别该分区。 在Windows 10安装程序中,您应该可以选择将Windows 10置于哪个分区。 如果格式化为FAT32,Windows应该能够看到它并在那里安装。 如果可以标记此分区,请将其标记为
- 一个Linux分区。 与Windows分区一样,这可能会有所不同,但Ubuntu的网站建议至少5 GB 。 再说一次,你可能还想要更多。 如果您正在升级而不是全新安装两个操作系统,那么您应该能够在gparted中显示的新“未分配”空间中创建此分区。 使它尽可能大,但如果你打算使用一个,请记得为linux-swap分区留出空间 。 它应格式化为ext4。 ext2或ext3也应该有效,如果您出于某种原因更喜欢它们。
- 如果从头开始安装,请按照上述说明进行Ubuntu分区。 确保将其格式化为ext4,ext3或ext2 。 这将允许Ubuntu使用它,但是让Windows 10安装程序无法识别它,这应该使它默认为您在步骤3中可以读取的FAT32分区。
- 可选,但建议: 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
运行它。 默认情况下,您将获得如下所示的条目列表:
当我第一次使用这个工具后摆弄EasyBCD和bcdedit尝试以正确的顺序启动东西时,我在这里有超过一百个条目,其中大多数都是重复的。
如果您的启动管理器列表不是太混乱,或者您不方便决定可删除的内容和不应删除的内容,请跳到步骤4.2。
要清除不需要的任何条目,请使用efibootmgr -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,因此您的安装程序可能会有所不同,但选项应该非常相似。)
如果安装程序未检测到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。
针对上述问题稍微简单一点的解决方案。
- 在启动期间按F10以进行高级BIOS设置
- 在BIOS Boot Order设置中启用Legacy Boot order,它将启用UEFI和Legacy Boot Order。
- 将引导延迟增加到5秒将在引导时间OS选择期间提供一些时间。
- 保存BIOS设置并退出。
- 在下次启动时,将询问您有关启动选择选项的信息。 按F9进入并选择相应的引导选项(Windows操作系统启动管理器或Ubuntu)
我找到了一个更简单的解决方案,它适用于安装了Windows 10的惠普笔记本电脑(355 G2)
- 启动时按下逃生键
- 按F9键选择引导选项
- 选择不是 UEFI的USB选项(我的选项是列表中的底部)并按Enter键
- 然后,您将收到错误消息屏幕。 但是,您只需键入“live”即可试用操作系统或“live-install”并按Enter键安装它,所有应该游泳……