![MBR在引导过程中的作用](https://linux22.com/image/1410289/MBR%E5%9C%A8%E5%BC%95%E5%AF%BC%E8%BF%87%E7%A8%8B%E4%B8%AD%E7%9A%84%E4%BD%9C%E7%94%A8.png)
我是 Stack Overflow 的新手。如果我的问题看起来不相关或愚蠢,请纠正我。
我在这里读到启动过程:主引导加载程序的任务是查找并加载辅助引导加载程序(第 2 阶段)。它通过在分区表中查找活动分区来实现此目的。当它找到活动分区时,它会扫描表中的其余分区以确保它们都处于非活动状态。验证后,活动分区的引导记录将从设备读取到 RAM 中并执行。
问题是,我的硬盘上有两个操作系统映像 windows 和 ubuntu,因此它们所在的两个分区都是活动的。那么为什么我们总是只有一个活动分区呢?(我知道活动分区是主分区之一,但为什么我们要特别提到一个主分区呢?)我有点困惑。请解答我的问题。
太感谢了。
答案1
原始 IBM/Microsoft 引导加载程序的工作方式与所述一致(搜索活动分区)。不过,并非所有引导加载程序都如此。特别是,Linux 中常见的引导加载程序(如 LILO 和 GRUB)的工作方式不同;它们忽略活动标志,而是向用户显示一个菜单,让用户选择要引导哪个操作系统。DOS 和 Windows 9x/Me 要求它们从设置了活动标志的分区引导,但我敢肯定,对于更新版本的 Windows 来说,这已不再适用。
此外,您链接的文章中描述的整个过程都已过时。现代计算机(所有基于 Intel 的 Mac、绝大多数搭载 Windows 8 的 PC 以及自 2011 年中期以来发布的许多 Windows 7 系统)使用可扩展固件接口 (EFI) 或其更新版本统一 EFI (UEFI)。EFI 的启动方式与 BIOS 完全不同。(令人困惑的是,许多人,甚至 PC 制造商都将“BIOS”一词应用于他们的 EFI,但这是误导。)在 EFI 下,MBR 不包含任何代码,也没有“活动”分区。相反,任意数量的引导加载程序都存储在EFI 系统分区 (ESP)。您可以通过固件内置的启动管理器选择要使用的启动加载程序。不幸的是,这种内置的启动管理器通常质量较差,并且通常需要在启动时按功能键才能访问它,因此许多双启动器将第三方启动管理器(GRUB、rEFInd、gummiboot 等)设置为默认启动管理器。
可以肯定的是,许多计算机仍然使用旧的 BIOS 方法启动——它们大多是较旧的 PC,但大多数现代 EFI 都包含 BIOS 兼容模式,因此可以配置为以许多用户更熟悉的旧方式启动。不过,切换启动模式需要重新安装引导加载程序,有时还需要切换正在使用的分区表,因此通常不会这样做,除非清除磁盘并重新安装所有内容。
答案2
您误将“活动”理解为“现有”。
分区表意义上的活动或多或少实际上意味着“从这个分区启动”。
您只能将 1 标记为启动分区,并且 BIOS 或 MBR 通常只会在找到第一个分区时停止,因为在启动分区过多的情况下,暂停整个系统是没有意义的。
对于具有多个“可启动分区”的计算机,则会在 MBR 中安装一个启动管理器(Windows 已内置一个,还有 LILO、GRUB 等),然后它会根据用户输入或默认超时提示并将启动过程重定向到所选分区,而不管此标志如何。
答案3
以下内容可能会解决您遇到的特定问题,但我并不是启动过程一般工作方式的专家。
一个硬盘只有一个活动分区
因此,如果您有两个硬盘,则每个硬盘都可以有一个活动分区
BIOS 选择从哪个硬盘启动。
然后从(该硬盘的)活动分区启动。
您谈到了映像,当写入分区或写入所有分区时,映像可能很重要,但在完成写入后,映像就不重要了。完成写入后,您就拥有了一个带有分区的硬盘。就像您拿一个没有分区的全新硬盘,创建分区并在其上安装操作系统一样。映像文件和刻录的映像不重要。