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

Pra*_*ngh 27 boot dual-boot bios bootloader

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

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

小智 42

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

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

许多 UEFI 系统在“传统模式”下启动——UEFI 加载“兼容性服务模块”——使其看起来像 BIOS——并且实际上像 BIOS 一样工作。

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

如果您想要丰富的血腥细节,请阅读内容。


kar*_*rel 16

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

在此处输入图片说明
          BIOS 与 UEFI

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


将 Ubuntu 转换为 UEFI 模式

  1. 启动引导修复,然后选择高级选项-> GRUB 位置选项卡。
  2. 如果您没有看到单独的 /boot/efi 分区选项,这意味着您的 PC 没有任何 UEFI 分区。
  3. 如果您看到单独的 /boot/efi 分区选项,请在其左侧的复选框中打勾。
  4. 单击右下角的应用按钮。

将 Ubuntu 转换为 UEFI 模式

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

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


将 Ubuntu 转换为 BIOS 模式

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

  • 如果 Ubuntu 安装在 GPT 磁盘上(您可以通过sudo parted -l命令检查它),请使用 GParted 分区编辑器在其磁盘的开头创建一个 BIOS-Boot 分区(1MB,未格式化的文件系统,bios_grub 标志)。
  • 启动引导修复,然后选择高级选项-> GRUB 位置选项卡。
  • 取消选中单独的 /boot/efi 分区选项

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

  • 单击右下角的应用按钮。
  • 设置您的 BIOS,使其在传统模式下启动 HDD。通常此设置位于Boot选项卡中?BIOS 的引导顺序部分。

将 Windows 转换为 GPT 模式

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


链接:


gui*_*erc 7

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

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

  • @Prashant Singh:Windows 引导加载程序不这样做(或不这样做,当我对 Windows 有所了解时)的最根本原因是 MicroSoft 不会通过让您运行其他操作系统来赚钱。 (3认同)
  • 您的系统每个磁盘只能有一个引导加载程序(并且只有一个处于活动状态)。通常,如果您的系统上有两个操作系统,则安装的第二个操作系统拥有引导加载程序,因为它将自己的代码写入 MBR。这就是 GNU/Linux (Ubuntu) 使用 GRUB 的原因;它是一个多步系统(第 1 步是 MBR,第 1.5 步和第 2 步在 /boot 中),它提供了询问您要加载/运行哪个操作系统的菜单(grub 无论如何都知道的那些,以及您拥有的任何 ISO)添加到它)。如果您有两个磁盘驱动器;您可以在每个驱动器上都有一个引导加载程序,但 BIOS 将决定哪个将运行。 (2认同)