当我想从外部硬盘驱动器运行 Ubuntu 时,应该在哪里安装引导加载程序?

cap*_*ain 9 partitioning boot grub2 dual-boot hard-drive

我有一台运行 Windows 10 的笔记本电脑,我想在外部硬盘驱动器上安装 Ubuntu,只要我需要它,我就可以插入它并从外部驱动器启动。

我遵循了一个教程,实际上是两个,并且都说引导加载程序必须安装在外部硬盘驱动器上。这导致我只能在插入外部 HDD 时访问 Windows。每当我没有插入它时,笔记本电脑就无法启动,我只会看到带有白线的黑屏。修复我的主引导记录后,我可以访问 Windows。

现在我想再试一次,但我担心如果我在内部驱动器上安装引导加载程序,我可能会以某种方式删除我的 Windows 分区,否则我的启动会出现问题。

所以我该怎么做?

Rod*_*ith 12

首先,了解引导模式至关重要。现代计算机可以通过以下两种方式之一启动:

  • BIOS -- 这是旧的启动方式,在 2011 年之前推出的大多数计算机上都使用过。现代计算机通过称为兼容性支持模块 (CSM) 的功能支持 BIOS 模式启动,也称为“传统模式启动支持”或一个类似的术语。因此,可以通过三个名称来引用此方法:BIOS、CSM 或传统。它涉及 16 位引导加载程序代码,这些代码分布在主引导记录 (MBR) 和其他各种位置。这是一种不优雅但成熟的启动方法,大多数没有明确提及启动模式的站点都描述了 BIOS 模式启动。但是,如果您的计算机装有 Windows 8 或更高版本,则它很可能使用这种启动方法。
  • EFI/UEFI -- 这是自 2011 年年中以来推出的大多数计算机的本机启动模式,它与 BIOS 模式启动完全不同,因此您应该忽略任何明确声明它用于 BIOS 模式启动的建议,或任何建议没有提到启动模式(因为它可能是旧的或由不知道区别的人编写的)。一个例外:令人困惑的是,许多人,甚至计算机制造商,都将他们的 EFI 称为“BIOS”。这种做法造成了很大的混乱。

既然您提到了 Windows 10,那么您的计算机很可能是基于 EFI 的并且以 EFI 模式启动。我将在这个假设下继续。如果这是不正确的,请忽略此答案的其余部分。

为了在 EFI 模式下引导内部磁盘,操作系统通常将引导加载程序作为文件存储在磁盘上的EFI 系统分区 (ESP)上。这个文件名可以是任何合法的,但对于 Ubuntu 来说,它将是EFI/ubuntu/shimx64.efi,然后启动EFI/ubuntu/grubx64.efi. 操作系统安装程序使用 EFI 的内置引导管理器注册引导加载程序的名称,该管理器将该名称存储在 NVRAM 中。如果 EFI 正常工作(并非全部都正常),这将导致启动过程正常工作。

这个过程应用于可移动磁盘的麻烦有三方面:

  • Ubuntu 安装程序会将 GRUB 安装到“该”ESP——但您可能有多个可用的 ESP(几乎可以肯定一个在硬盘上,也可能一个在 USB 驱动器上)。控制 GRUB 的安装位置可能很棘手。它不是通过使用标有关于安装 GRUB 的明显标题的选项来完成的。相反,它只能通过将要使用的 ESP 标记为“EFI 引导分区”或“EFI 系统分区”(其名称取决于 Ubuntu 版本)来完成(AFAIK)。
  • 如果您将 GRUB 安装到 USB 驱动器上的 ESP,那么当您移除 USB 驱动器时,EFI 可能会注意到它有一个无效的注册引导加载程序条目,并删除该条目。许多 EFI 都这样做,这意味着如果您将 GRUB 安装到外部磁盘然后拔掉它,您将失去从该磁盘启动的能力,即使您重新插入磁盘也是如此。
  • Ubuntu 配置 GRUB 的方式导致它依赖于 Ubuntu/boot/grub目录中的配置文件,而这不太可能位于 ESP 上。因此,如果 Ubuntu 将 GRUB 安装到内部磁盘上的 ESP,您将避免第一个问题,但会遇到另一个问题,因为当您在 USB 驱动器断开连接的情况下启动时,GRUB 将启动并且无法找到其配置文件。结果是一个grub>会让大多数用户感到困惑的提示。

这些问题有多种解决方案,包括:

  • GRUB手动安装到外部磁盘上的文件名后备使用OS安装启动-后备文件名EFI/BOOT/bootx64.efi。如果您将 Shim(启动 GRUB)复制到此文件名(通过复制EFI/ubuntuEFI/BOOTESP 然后重命名shimx64.efibootx64.efiinEFI/BOOT),您的固件将能够像启动 Ubuntu 安装程序一样启动基于 USB 的 GRUB。这将解决我刚刚发现的两个问题,但您需要使用计算机的内置启动管理器来选择要启动的操作系统。这个内置启动管理器的范围从不可用到可以容忍,因此这可能是也可能不是可接受的解决方案。在安装 Ubuntu 后,您可能还需要调整引导顺序,以防止它默认从内部磁盘的 ESP 或外部磁盘的 ESP 启动 GRUB。
  • /boot在内部磁盘上放置一个分区——如果您将 GRUB 安装到内部磁盘上,那么您也可以/boot在内部磁盘上放置一个分区。这将使 GRUB 能够在所有引导上正常工作;但是,即使拔掉了 U 盘,Ubuntu 选项也会一直出现。这可能是不可取的,特别是如果 Ubuntu 是默认的。此外,此解决方案意味着您的外部 USB 驱动器只能在您准备好它的计算机上启动。如果您希望能够在其他计算机上使用该磁盘,则应避免使用此解决方案。
  • 使用更智能的启动管理器——启动管理器让您可以选择要启动的操作系统,而启动加载程序则将内核加载到内存中。GRUB 做这两项工作,而 EFI 的内置引导管理器只做第一个工作。还有其他可用的引导管理器,其中一些可以帮助您避免我发现的问题。例如,我自己的rEFInd,如果安装到内部磁盘的 ESP 并设置为默认启动程序,当且仅当存在 GRUB 或 Linux 内核时,即插入 USB 驱动器时,才会检测并显示 Ubuntu 选项在。通过设置default_selection选项refind.conf适当地,您可以将 rEFInd 配置为在插入 Ubuntu USB 驱动器时自动启动 Ubuntu,如果未插入 Ubuntu USB 驱动器则直接启动到 Windows。我对这个问题的回答提供了有关此类配置的更多详细信息,尽管在Mac 而不是 PC。

运气好的话,这些方法之一将使您启动并运行。