当前位置: 首页>>技术教程>>正文


在双引导系统中,BIOS 如何选择运行哪个引导加载程序?

, , ,

问题描述

我有 Windows 和 Ubuntu 的双启动。当我打开机器时,BIOS 执行 POST,然后引导加载程序启动。

我想了解 BIOS 如何选择要运行的引导加载程序。我想知道在双引导计算机中 BIOS 和引导加载程序之间发生的过程。

最佳方法

BIOS 固件并没有真正选择引导加载程序。它从驱动器的扇区 0 加载代码并执行它。无论那里有什么,它都会执行。希望它是一个引导加载程序(或加载引导加载程序的东西),但它不一定是。在早期的 PC 时代,软盘上的游戏可以在没有操作系统的情况下简单地启动和运行 – 这些现在称为 “booters.”

UEFI 固件实际上了解分区和文件系统,并扫描驱动器以查找 UEFI 系统分区类型。由于这是一个文件系统,因此可以在此处放置多个引导加载程序。 UEFI 固件应该提供一个菜单或其他方式供您选择使用哪个引导加载程序。

许多 UEFI 系统在 “Legacy mode” 中启动 – UEFI 加载“兼容性服务模块” – 使其看起来像 BIOS – 实际上像 BIOS 一样工作。

GRUB 是一种常见的开源引导加载程序,它可以引导 Linux 或 “chainload”(控制)Windows 引导加载程序(通常是 Windows 分区引导文件夹中的 winload.exe)。 GRUB 使您能够做出决定。 GRUB 可以读取配置文件并从中选择默认选项。

如果你想要大量血腥的细节,请阅读 this

次佳方法

此图显示了控制如何从固件(BIOS 或 UEFI)传递到引导加载程序,以及如何从引导加载程序传递到 Ubuntu 中的操作系统。

BIOS 与 UEFI

如果操作系统安装在不同的模式下(BIOS 和 UEFI),则无法使用 grub 双启动 Windows 和 Ubuntu。在某些预装了 Windows 的计算机中,有一个选项可以在 UEFI 设置实用程序中启动 Windows。


将 Ubuntu 转换为 UEFI 模式

  1. 启动Boot-Repair,选择高级选项-> GRUB 位置选项卡。

  2. 如果您没有看到单独的 /boot/efi 分区选项,这意味着您的 PC 没有任何 UEFI 分区。

  3. 如果您看到单独的 /boot/efi 分区选项,请在其左侧的复选框中打勾。

  4. 单击右下角的应用按钮。

  1. 设置您的 BIOS,使其在 UEFI 模式下启动硬盘驱动器。调整此设置的方式取决于计算机的具体型号,但通常此设置位于 BIOS/UEFI 设置实用程序的 Boot 选项卡下的引导优先级设置中。

或者,您可以按照 this answer 中的说明,在实时 Ubuntu USB 会话中从终端将现有 Ubuntu 安装从 BIOS 模式转换为 UEFI 模式,该会话以 UEFI 模式启动。


将 Ubuntu 转换为 BIOS 模式

注意:此过程仅用于将 UEFI 模式 Ubuntu 安装转换为以 BIOS/CSM/legacy 模式启动。如果某些硬件在 UEFI 模式下无法正常工作,则可能需要进行此类转换。 (显卡是问题的常见来源。)转换为 BIOS/CSM/legacy 模式启动而 Windows 以 UEFI 模式启动会使启动过程更加尴尬——您需要使用计算机的 内置 启动管理器来切换操作系统和某些计算机的启动管理器非常糟糕,这可能是不可能的。

  • 如果 Ubuntu 安装在 GPT 磁盘上(您可以通过 sudo parted -l 命令检查它),请使用 GParted 分区编辑器在其磁盘的开头创建一个 BIOS-Boot 分区(1MB,未格式化的文件系统,bios_grub 标志)。

  • 启动Boot-Repair,选择高级选项-> GRUB 位置选项卡。

  • 取消选中单独的 /boot/efi 分区选项

  • 单击右下角的应用按钮。

  • 设置您的 BIOS,使其在传统模式下启动 HDD。通常,此设置位于 BIOS 的 Boot 选项卡 → Boot order 部分。


将 Windows 转换为 GPT 模式

MBR2GPT.exe 是一个命令行工具,它位于 Windows 10 的 System32 文件夹中。有了它,您可以有效且非破坏性地将 Windows 10 操作系统磁盘从 MBR(用于传统 BIOS)转换为 GPT 分区样式(用于 UEFI),而无需修改/删除磁盘上的任何数据或进行 Windows 10 的全新安装。


链接:

第三种方法

在传统模式(BIOS 引导而非 UEFI)下,BIOS 控制驱动器顺序。曾几何时,这曾经是由电缆控制的;但是更改 BIOS 设置胜过打开盒子&更换电缆。

BIOS 加载(到内存中)第一个磁盘(或由 BIOS 控制的驱动器顺序)的第一个扇区(称为 MBR 或主引导记录的磁盘的 512 字节),然后将(CPU)控制传递给这个 ‘bootloader’。 BIOS 就这样完成了它的工作,第一个扇区中的代码运行。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12339.html,未经允许,请勿转载。