在 UEFI 模式下从外部磁盘启动 Ubuntu

在 UEFI 模式下从外部磁盘启动 Ubuntu

我在外部 USB 硬盘上安装了 Ubuntu 14.10 32 位。

我正在尝试在 UEFI 上网本(Asus X205TA)中启动它

看来 UEFI 模式阻止我启动它。

我怎样才能启动它而不必重新安装它并且也不要在内部硬盘上安装 Ubuntu?

我也在非 UEFI 计算机上启动这个 Linux,那么我不想太“深入”地更改它的配置。

有什么方法可以改变一些设置或安装引导加载程序(甚至在上网本内置硬盘中)来解决这个问题吗?

笔记:如果我安装了 UEFI 引导加载程序,那么引导加载程序就是 UEFI,并且引导“正式”开始,那么此时如果引导加载程序足够强大,它可能会连接到外部硬盘中的非 UEFI 操作系统并继续加载引导数据,对吗?

笔记:我还接受在虚拟机(如 VMWare)中安装引导加载程序(如 GRUB)的解决方案,该虚拟机能够访问外部硬盘进行引导。

感谢大家!

答案1

如果我安装了 UEFI 引导加载程序,那么引导加载程序就是 UEFI,并且引导“正式”开始,那么此时如果引导加载程序足够强大,它可能会连接到外部硬盘中的非 UEFI 操作系统并继续加载引导数据,对吗?

不。你忽略了一些基本而关键的东西——即启动模式(BIOS/CSM/legacy 或 EFI/UEFI)由固件决定。固件会根据其自身的功能、设置和算法来寻找特定类型的引导加载程序(BIOS 与 EFI)。如果找到合适的引导加载程序,就会运行它。如果没有找到,它可能会回退并寻找其他类型的引导加载程序,否则引导过程可能会失败。

引导加载程序是为特定固件类型(BIOS、EFI 和更奇特的东西)编写的,因此您不能在 EFI 模式引导中使用 BIOS 模式引导加载程序,反之亦然。在启动引导加载程序时,引导模式已确定。(rEFIt 和 rEFInd 是部分例外;它们是可以重定向到 BIOS 模式引导的 EFI 模式引导管理器。但它们仍然依赖 BIOS 模式引导加载程序来执行此操作。)

此外,BIOS 和 EFI 引导加载程序的安装方式完全不同,这使得引导介质(CD、USB 闪存驱动器或内置硬盘)能够支持两个都引导加载程序的类型。以这种方式配置,磁盘可以在任何一个BIOS 模式的计算机或 EFI 模式的计算机。Ubuntu 安装介质就是这样设计的(至少对于 64 位版本的 Ubuntu 而言)。

除了引导加载程序之外,还有没有什么在 Ubuntu 中,该工具是针对特定启动模式的,因此无法在其他启动模式下工作。因此,您可以在 BIOS 模式下安装 Ubuntu,然后使用 EFI 模式引导加载程序来启动该安装,反之亦然。(有一些 EFI 专用工具,如efibootmgr,但它们不是在 EFI 模式下启动计算机所必需的,并且如果安装了它们,它们不会阻止 BIOS 模式启动。)

因此,从实际情况来看,您需要做的是先在一种模式下安装,然后除了原始引导加载程序之外,再为另一种模式安装引导加载程序。您可以按任意顺序执行此操作。一些复杂情况包括:

  • MBR 与 GPT-- Ubuntu 默认使用 MBR 分区表进行 BIOS 模式安装,默认使用 GPT 进行 EFI 模式安装。通常可以跨分区表类型和启动模式(MBR/EFI 和 GPT/BIOS),但可能会出现微妙的复杂情况。就我个人而言,我会选择 GPT,但这需要创建一个 ~1MiBBIOS 启动分区在磁盘上,您必须意识到这一需要。
  • EFI 引导加载程序文件名-- 如果您在 EFI 模式下安装 Ubuntu 或事后使用自动脚本安装引导加载程序,它可能会将引导加载程序放入EFI/ubuntu/grubx64.efi或类似的东西中,并将该文件名注册到 NVRAM。这对于常规安装到硬盘上很有效。要制作“一般”可引导的外部 EFI 介质,您必须将引导加载程序安装为EFI/BOOT/bootx64.efi,这是一个“后备”文​​件名,如果固件找不到其他名称或您明确告诉它从外部介质引导,它将尝试使用该文件名。以这种方式设置将需要使用特殊的引导加载程序安装选项或事后手动设置。
  • 引导加载程序选择-- 对于一种引导模式而言,在从一台计算机移动到另一台计算机的外部磁盘上进行安装已经够棘手的了。如果使用 GRUB,添加第二种引导模式则会带来麻烦:GRUB 配置文件对于每种引导模式都必须略有不同。因此,您必须“深入”研究 GRUB 配置,或者使用两个不同的引导加载程序 -- 比如,BIOS 使用 GRUB,EFI 使用 rEFInd;或者 BIOS 使用 LILO,EFI 使用 GRUB。
  • 安全启动-- 部分(但不是全部)EFI 支持安全启动。部分(但不是全部)EFI 启用了安全启动。大多数(但不是全部)计算机使用 Microsoft 的安全启动密钥。如果启用了安全启动,则只有使用已安装密钥签名的引导加载程序才可启动。了解要部署的系统将帮助您决定如何设置引导加载程序的 EFI 端。例如,如果您希望能够以最少的麻烦在任何随机 Windows 系统上启动,您将需要一个签名的 EFI 引导加载程序,这通常意味着 EFI 的 GRUB。另一方面,如果您知道大多数目标不使用安全启动,或者如果您不介意在第一次启动这些计算机之一时跳过一些额外的步骤,您可以使用其他东西。

就我个人而言,为了做到这一点,我会准备一个带有 GPT 和所有分区的外部介质(包括 BIOS 启动分区和EFI 系统分区(ESP)),然后以 BIOS 模式安装并使用 Ubuntu 的功能确保 GRUB 已安装。完成后,我会手动安装自己的重新索引添加到 ESP 作为EFI/BOOT/bootx64.efi(后备文件名)。结果将是一个可以在 BIOS 模式或 EFI 模式下启动的系统。这种方法的一个复杂之处是安全启动;rEFInd 二进制文件没有以在大多数计算机上直接启动的方式签名,因此您需要将 Shim 或 PreLoader 添加到组合中,如上所述rEFInd 的安全启动页面。这可能是一个足够大的复杂问题,最好在 EFI 模式下安装,包括为 Ubuntu 安装 GRUB。然后您需要复制 Shim 和 GRUB 以使用后备文件名工作,并安装其他 BIOS 模式引导加载程序。

关于 EFI 模式启动的一些额外阅读可能会有所帮助。我推荐:

答案2

我收到此消息:

“看来这台计算机配置为通过 efi 启动……”

当我在新系统上选择了错误的设备时,我选择了 sda 而不是 sdb。sda 是安装时的 USB 记忆棒。

相关内容