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


9

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

我遵循了一个教程,实际上是两个教程,并且都说过引导加载程序必须安装在外部HDD上。结果,我只能在插入外部HDD的情况下才能访问Windows。每当我未插入外部硬盘驱动器时,笔记本电脑都不会启动,而我只会得到黑屏和白线。修复主引导记录后,我可以访问Windows。

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

所以我该怎么做?


可能的错误和解决方法,位于bugs.launchpad.net/ubuntu/+bug/1835639
Bellera,

Answers:


10

首先,这是关键,你了解你的引导模式。现代计算机可以通过以下两种方式之一启动:

  • BIOS-这是旧的启动方式,已在2011年之前推出的大多数计算机上使用。现代计算机通过称为兼容性支持模块(CSM)的功能(也称为“传统模式启动支持”)来支持BIOS模式启动。一个类似的术语。因此,可以用三个名称来引用此方法:BIOS,CSM或旧版。它涉及主引导记录(MBR)和其他各个位置中列出的16位引导加载程序代码。这是一种不太成熟的引导方法,大多数未明确提及引导模式的站点都描述了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明显的标题选项来完成的。而是只能通过将要用作“ EFI引导分区”或“ EFI系统分区”(名称取决于Ubuntu版本)的ESP标记为“仅其他版本”安装选项(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)复制到此文件名(通过在ESP上复制EFI/ubuntuEFI/BOOT,然后重命名shimx64.efibootx64.efiinEFI/BOOT),您的固件将能够像Ubuntu安装程序一样启动基于USB的GRUB。这可以解决我刚刚发现的两个问题,但是您需要使用计算机的内置启动管理器来选择要启动的操作系统。内置的启动管理器的范围从无法使用到可以容忍,因此这可能是也可能不是可接受的解决方案。在安装Ubuntu之后,您可能还需要调整启动顺序,以阻止它从默认情况下从内部磁盘的ESP或外部磁盘的ESP启动GRUB。
  • /boot在内部磁盘上放置一个分区 -如果将GRUB安装到内部磁盘上,则还可以/boot在内部磁盘上放置一个分区。这将使GRUB可以在所有引导程序上正常工作;但是,即使拔出USB磁盘,Ubuntu选项也会一直出现。这可能是不可取的,特别是如果默认为Ubuntu。同样,此解决方案意味着您的外部USB驱动器仅可在准备它的计算机上引导。如果要能够在其他计算机上使用该磁盘,则应避免使用此解决方案。
  • 使用更智能的启动管理器 -启动管理器为您提供了要启动的操作系统的选择,而启动加载程序则将内核加载到内存中。GRUB会完成这两项工作,而EFI的内置启动管理器只会执行第一项工作。还有其他启动管理器,其中一些可以帮助您避免我发现的问题。例如,如果将自己的rEFInd安装到内部磁盘的ESP上并设置为默认的引导程序,它将在存在GRUB或Linux内核(即插入USB驱动器时)的情况下,检测并显示Ubuntu选项。 in。通过default_selectionrefind.conf适当地,您可以将rEFInd配置为在插入Ubuntu USB驱动器时自动启动Ubuntu,并在未插入Ubuntu USB驱动器时直接启动到Windows。我对这个问题的回答提供了有关这种类型配置的更多详细信息,尽管在Mac,而不是PC。

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


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

这是基于BIOS的解决方案,在大多数基于EFI的计算机上无法正常运行。
罗德·史密斯

0

您需要在UEFI / BIOS用于引导的驱动器上安装引导加载程序。您可以在BIOS设置,您通常可以按类似访问更改该驱动器F10F12Del您的计算机启动之后。因此,作为第一步,您可以尝试将计算机设置为从外部驱动器而不是内部驱动器引导。如果引导加载程序已正确安装在外部驱动器上,则应该可以使用。

为了日常正常使用,为方便起见,您可能总是希望从同一驱动器引导,因此您需要将引导加载程序安装到内部驱动器中。但是,在执行此操作之前,您应该进行备份,最好是内部工作驱动器的完整磁盘映像。如果在Windows上安装Ubuntu之后遇到问题,引导修复工具可能会有所帮助。


我已经更改了从内部HDD之前的USB引导的引导顺序。所以我想如果我在外部HDD上安装Ubuntu并在外部HDD上安装引导加载程序,我可以但是就像我从USB棒启动一样吗?
上尉

抱歉,我不确定您要问的是什么。您应该能够1)在外部驱动器上安装引导程序,2)卸下USB驱动器,以及3)将BIOS设置为从外部驱动器引导,然后在外部驱动器上引导至Ubuntu。

@capitan赖特。就像我说的那样,这行得通。
Izzno

0

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

USB-Key
USB-Disk
HDD
etc 
etc

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

这样,如果由于某种原因断开外部设备的连接,则不会对您的计算机造成影响。

并且:如果您不使用专有驱动程序,则可以在其他计算机上运行该系统...

(顺便说一句,我不建议将这种类型的安装永久使用,因为它会比eSATA慢)


Ubuntu支持安全启动。尽管偶尔会出现不兼容的情况,但这种情况很少见,因此无需混淆该设置。在EFI中,引导顺序设置通常比您描述的复杂得多,这既好又不好-它提供了更多选项和更细粒度的控制;但是这意味着还有很多东西要学习,而在BIOS领域学到的简单解决方案不太可能起作用。
罗德·史密斯

我没有意识到ubuntu可能会“摆”为窗口,因为我见过的所有“安全启动BIOS”选项都明确指出它禁用了永久更改启动顺序或OS的所有功能。
Izzno

Ubuntu不会像Windows那样“摆姿势”。安全启动仅要求EFI程序由私钥签名,该私钥的公钥已在固件中注册。Microsoft为第三方签名密钥,包括Canonical的Shim二进制文件,使它们可以在包含Microsoft密钥的计算机上运行。我从未听说过安全启动实现会阻止更改启动顺序,尽管我认为供应商可能会选择添加该限制。有关此主题的更多信息,请参见我在安全启动上的页面
罗德·史密斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.