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

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

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

我按照一个教程(实际上是两个)操作,两个教程都说引导加载程序必须安装在外部硬盘上。这导致我只有在插入外部硬盘时才能访问 Windows。每当我没有插入外部硬盘时,笔记本电脑就无法启动,我只会看到黑屏和一条白线。修复主引导记录后,我就可以访问 Windows。

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

所以我该怎么做?

答案1

首先,批判的了解启动模式。现代计算机可以通过以下两种方式之一启动:

  • BIOS-- 这是旧的启动方式,在 2011 年之前推出的大多数计算机上都使用过。现代计算机通过称为兼容性支持模块 (CSM) 的功能支持 BIOS 模式启动,也称为“传统模式启动支持”或类似术语。因此,这种方法可以用三个名称来指代:BIOS、CSM 或传统。它涉及在主引导记录 (MBR) 和其他各个位置中展开的 16 位引导加载程序代码。这是一种不太优雅但成熟的启动方法,大多数没有明确提到启动模式的网站都描述了 BIOS 模式启动。但是,如果您的计算机附带 Windows 8 或更高版本,则很可能它确实如此不是使用此种启动方法。
  • 启动/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 正常工作(并非所有 EFI 都能正常工作),这将导致引导过程正常运行。

当将此过程应用于可移动磁盘时,问题有三方面:

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

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

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

如果幸运的话,这些方法中的一种方法将帮助您顺利运行。

答案2

  1. 启动 Ubuntu Live USB/CD
  2. 插入外部硬盘
  3. 在外部硬盘上安装 Ubuntu(高级,因此你可以设置引导加载程序的安装位置)
  4. 配置 BIOS 以从外部硬盘启动

答案3

您需要在 UEFI/BIOS 用于启动的驱动器上安装引导加载程序。您可以在 BIOS 设置中更改此驱动器,通常可以在计算机启动后立即按F10F12或等键来访问Del。因此,作为第一步,您可以尝试将机器设置为从外部驱动器而不是内部驱动器启动。如果引导加载程序正确安装在外部驱动器上,这应该可以正常工作。

对于日常使用,您可能希望始终从同一驱动器启动以方便使用,因此您需要将引导加载程序安装到内置驱动器。不过,在执行此操作之前,您应该备份工作内置驱动器,最好是完整的磁盘映像。如果您在安装 Ubuntu 和 Windows 后遇到问题,启动修复工具可能会有帮助。

答案4

我会在外部设备上安装引导加载程序!这样,您的 Windows 安装就不会损坏或删除引导加载程序。设置 BIOS 进行引导将是一项简单的任务:

USB-Key
USB-Disk
HDD
etc 
etc

注意:请确保您已禁用安全启动(如果您找到该选项)

这样,如果您由于某种原因断开外部设备,它不会对您的计算机造成问题。

并且:如果您远离专有驱动程序,您将能够在其他计算机上运行该系统......

(顺便说一句,我不建议永久使用这种安装方式,因为它比 eSATA 慢)

相关内容