在预装 Windows 8(64 位)的 HP 上进行 Trusty Ubuntu 双启动安装(支持 UEFI)

在预装 Windows 8(64 位)的 HP 上进行 Trusty Ubuntu 双启动安装(支持 UEFI)

是的,我读过很多次《在预装的 Windows 8(64 位)系统上安装 Ubuntu(支持 UEFI)》,也读过副标题为《通过反复试验快速轻松地安装 Ubuntu》的“UEFI”部分。我从这些文章中学到了很多东西,但我还是个新手,无法完全掌握。

我有一台预装了 Windows 8.1(64 位)的 HP15 笔记本电脑。芯片是 Intel Pentium CPU N3520 @ 2.16 GHz。内存是 4GB。我希望保留 Windows 8.1 并让 Ubuntu 14.04 与其双启动。

我已采取的步骤:

  1. 我更改了 BIOS 中的启动顺序以启用从 USB 启动。

  2. 我的 USB 上有 Ubuntu,并且我已在该设备上试用过它。当我尝试在硬盘上安装 Ubuntu 时,我没有看到与 Windows 一起安装它的选项。

  3. 我关闭了Win8的快速启动。

  4. 我禁用了 Win8 中的休眠模式。

  5. 在 Win8 磁盘管理中,我注意到分区如下:400 MB(恢复分区)260 MB(EFI 系统分区)678.58 GB NTFS Windows(C:)19.28 GB NTFS 恢复(D:)(OEM 分区)

  6. 关闭。

  7. 在 Win 8 的磁盘管理中,我通过缩小 C: 创建了 300 GB 未分配分区。该分区是 GPT。其他分区似乎是 MS-DOS。根据我对上述文章的理解,我保持 UEFI 启用/安装,并保持安全启动启用。

  8. 在此机器上,ESC F10 可进入 BIOS。(ESC F2 可进入 UEFI。)

8 在USB中启动,使用无需安装的尝试ubuntu。

  1. 设置互联网连接。

  2. 尝试在 HD 上安装 Ubuntu。没有找到与 Windows 一起安装的选项。

  3. 此时,我想我应该使用“其他”选项,但除非它指导我一步一步地完成,否则我担心会把事情搞砸。

  4. BIOS 当前具有以下内容:禁用传统支持,启用安全启动,UEFI 启动顺序为 USB 软盘,然后是 OS 启动管理器,然后是其他选项

(许多年前我用 MEPIS 做过这个并且没有遇到任何问题 (:-)。)

非常感谢。

答案1

截至 2015 年 1 月,HP 笔记本电脑(可能是任何 HP 电脑)中 UEFI 的 BIOS 已损坏。每次运行 BIOS 时,它都会覆盖启动顺序以确保 Windows 启动。作为临时解决方法,您可以中断启动顺序并选择启动 ubuntu(在我的笔记本电脑中,顺序为Esc,然后F9)。

但是,这可能不是解决问题的长期好办法。我也不喜欢上面提出的 USB 启动解决方案。我不想将我的系统放在 USB 驱动器上。幸运的是,你可以让它工作。使用双启动说明这里以及下面的 HP 修复/解决方法。

GreatEmerald 写了解决方案这里,但我会复制,以便有更多参考这个重要的解决方案。下面的配方对我有用,尽管我使用bootmgf2.efibootmgfw.efi~


存在某种“恢复功能”,使得每次启动时第一个 UEFI 加载选项都会指向以下两个位置之一,顺序如下:

  • \EFI\Microsoft\Boot\bootmgfw.efi
  • \EFI\Boot\bootx64.efi

此选项显示为“OS 启动管理器”(对于第一条路径),对于第二条路径则显示为类似于“UEFI 分区”的内容,完全忽略了赋予它的实际名称(当您通过 efibootmgr 查看 EFI 变量时,您会看到显示为“OS 启动管理器”的内容实际上设置为名称“Windows 启动管理器”;我不知道为什么有人会这样做)。如果您尝试更改启动顺序以使该插槽不是第一个,UEFI 将在下次启动时覆盖 BootOrder 变量并将其重置为指向“OS 启动管理器”。

默认情况下,上述两个路径都包含相同的 Microsoft 引导加载程序(如果您检查两者的 md5sum,您会发现它们匹配)。

因此,在 HP 发布更新的 UEFI 以允许关闭此“功能”或通过F10UEFI 设置重新排列启动选项之前,您可以采取以下措施以最少的黑客手段实现双启动:

  1. 在 Windows 中,挂载 UEFI 分区(mountvol S: /S将其挂载为 S:驱动器)并复制文件\EFI\Microsoft\Boot\bootmgfw.efi以使用其他名称(例如,我将其复制到\EFI\Microsoft\Boot\bootmgfw.efi~,但您可以将名称更改为其他任何名称)。

  2. 在 Windows 命令提示符中,更新 Windows UEFI 条目以指向新名称:

    bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi~
    

    (相应地调整您的设置名称)。

  3. 或者,更改 Windows 引导加载程序的名称,以便确定它指向新的文件位置:

    bcdedit /set {bootmgr} description "Fixed Windows path"
    
  4. 安装其他操作系统。在我的例子中,引导加载程序安装在 中\EFI\opensuse\grubx64.efi

  5. 删除这两个文件,\EFI\Microsoft\Boot\bootmgfw.efi\EFI\Boot\bootx64.efi

  6. 使用 efibootmgr 删除“OS boot Manager”条目:

    sudo efibootmgr -b 0000 -B
    
  7. 使用 efibootmgr 选项将新的操作系统引导程序设置为默认引导程序-o。在我的例子中,我在插槽 Boot0001 中有一个名为“opensuse”的条目,在插槽 Boot0002 中有更新的路径 Windows 条目,所以我必须这样做sudo efibootmgr -o 0001,0002

  8. 更新 GRUB 以将 Windows 条目指向重命名的文件(您必须创建一个新文件/etc/grub.d并重新运行grub-mkconfig)。

就是这样,现在 UEFI 将默认启动 GRUB(它不会重新生成“OS 启动管理器”条目,因为它无法找到两个硬编码路径中的任何一个,并且会“回退”到正确读取 BootOrder 变量),并且菜单F9仍然允许选择直接启动 Windows。


为了方便您配置 grub,您不必费力,下面是我放入 /etc/grub.d/40_custom 文件中的 Windows 条目:

menuentry "HP / Microsoft Windows 8.1" {
   echo "Loading HP / Microsoft Windows 8.1"
   insmod part_gpt
   insmod fat
   insmod search_fs_uuid
   insmod chain
   search --fs-uuid --no-floppy --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 3C62-71F3
   chainloader /EFI/Microsoft/Boot/bootmgf2.efi
}

您的 UUID 不会是 3C62-71F3。使用此命令查找它:

grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgf2.efi

您的 gpt 分区和提示可能不同。使用此命令:

grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgf2.efi

要编译你的 grub 配置编辑:

grub-mkconfig -o /boot/grub/grub.cfg

答案2

我的 USB 上有 Ubuntu,并且我已在该设备上试用过它。当我尝试在硬盘上安装 Ubuntu 时,我没有看到与 Windows 一起安装它的选项。

在 EFI 模式下安装 Ubuntu 时,几乎总是缺少“同时安装”选项。您必须使用“其他”选项或完全清除计算机上的 Windows。本网站和其他地方都有许多关于如何使用“其他”选项的描述,例如:

在 Win 8 的磁盘管理中,我通过缩小 C: 创建了 300 GB 未分配分区。该分区是 GPT。其他分区似乎是 MS-DOS。根据我对上述文章的理解,我保持 UEFI 启用/安装,并保持安全启动启用。

你混淆了两件事。GUID 分区表 (GPT)是一个描述整个磁盘。在 GPT 磁盘上,每一个分区是 GPT 分区——但这些分区可以属于不同的操作系统,也可以由单个操作系统用于不同的目的,就像主引导记录 (MBR)磁盘。

术语“MS-DOS”应用于磁盘时,既可以指使用 MBR 分区方案的整个磁盘,也可以指使用 FAT 文件系统的单个分区。考虑到您的上下文,我怀疑您指的是后者,尽管如果您有两个物理磁盘,则可能是您有一个 GPT 磁盘和一个 MBR 磁盘。GPT 磁盘当然可以容纳 FAT 分区,事实上,一个特殊的 FAT 分区,称为EFI 系统分区 (ESP),包含使计算机能够启动的启动加载程序。如果您需要更多帮助来解释磁盘布局,您可以必须parted提供更多详细信息,例如 GUI 分区工具的屏幕截图或显示从文本模式工具(如或 )获得的分区的剪切粘贴输出gdisk

答案3

如果您希望 Windows 和 Ubuntu 都能够通过 EFI 启动,还有一点很重要:

当您选择“其他”安装类型,然后出现允许您进行分区的屏幕时,请为“引导加载程序安装设备”选择 EFI 分区(例如 /dev/sda1,而不是 /dev/sda)。这允许 GRUB 与 EFI 一起工作。至少在 14.04 中,此选择不是默认选择,因此请查看分区以找到类型为“efi”的分区。

答案4

我在预装了 Windows 10(64 位)(支持 UEFI)的 HP 笔记本电脑上尝试了此操作,并且成功了。

Ubuntu 16.04安装过程标准化。

安装打开终端类型后

efibootmgr

如果尚未安装,请使用以下方式安装

sudo apt-get install efibootmgr

输出将会像这样

BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0001,2001,2002,2004
Boot0001* Windows Boot Manager
Boot0002* ubuntu
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot3001* Internal Hard Disk or Solid State Disk
Boot3002* Internal Hard Disk or Solid State Disk

在文本顶部,你会看到我当前的启动设备是0002

启动顺序如下0001,2001,2002,2004

更改启动顺序类型

sudo efibootmgr –o 2,1

现在重新启动计算机。将出现一个菜单,其中包含启动 Ubuntu 和 Windows 10 的选项。

相关内容