主引导程序和辅助引导程序有什么区别?主引导程序和辅助引导程序是指引导程序的两个部分还是两个阶段?我很困惑。
答案1
您感到困惑,因为这是描述该过程的一种过于简单的方式。如果您一直在阅读与 IBM 文章中提到的相同的文章,主引导加载程序和辅助引导加载程序,这是人们似乎从中得出这种主要/次要概念的地方之一,请注意,它采取了一种相当狭隘的、只针对 Linux 的世界观(正如它在第一句话中明确指出的那样),它是在 2005 年写的,它实际上区分了相同引导加载程序(GRUB)安装在硬盘上的两个不同位置(MBR 病毒区域和磁盘分区),而不是安装在两个不同的引导加载程序(一个“主”引导加载程序和一个“辅助”引导加载程序)之间。
实际上,为 PC 兼容机和工作站级机器(根据问题的标签)引导大多数操作系统是系列加载程序,每个程序加载下一个程序。主/次区别错误地暗示只有两个程序,或者(如 Thayne 的回答中所述)错误地暗示序列中的几个程序中只有两个具有“主”和“次”的特殊状态,或者错误地暗示如今的 PC 甚至必然在 MBR 和 VBR 中使用引导加载程序。
此类链包含超过两个程序的三个非常简短的示例:
- 旧式 PC98/PC-AT 机器固件中的加载程序会加载主引导记录中的加载程序,而主引导记录又会加载卷引导记录中的加载程序,而卷引导记录又会从文件中加载 PC-DOS/DR-DOS 的基本输入/输出系统部分,而文件又会
IBMBIO.COM
从文件中加载 PC-DOS/DR-DOS 的基本磁盘操作系统部分IBMDOS.COM
。 - 老式 PC98/PC-AT 机器固件中的加载程序会加载主引导记录中的加载程序,主引导记录会加载卷引导记录中的加载程序,卷引导记录会加载加载程序,
OS2BOOT
加载OS2LDR
加载程序,加载加载OS2KRNL
程序。 - 新型 EFI 机器的固件中的 EFI Boot Manager 程序会加载该
bootmgfw.efi
程序,该winload.exe
程序又会加载该ntoskrnl.exe
程序。
没有理由将其中任何一个指定为比其他更“主要”。事实上,没有理由将加载程序指定为内置于机器固件中作为“主要”。例如,如果详细研究 TianoCore,就会发现甚至有一系列引导加载阶段在固件中甚至有一个概念叫做固件文件系统(不过,这两者都超出了这个答案的范围,IBM MicroChannel Architecture 机器的启动过程也是如此,它甚至在 MBR 引导加载程序之前就从 DASD 加载了内容。)
GRUB 1 非常出名地拥有“阶段 1.5”,这一事实本身就足以说明问题,即使忽略显然有另一个加载程序首先加载 GRUB“阶段 1”这一事实,PC 兼容世界中的引导序列只有两个阶段,引导程序整齐地分为“主要”和“次要”,这种想法与现实不符。
进一步阅读
- 乔纳森·德·博因·波拉德(2011年)。不同类型的引导程序. 常见问题答案。
- 乔纳森·德·博因·波拉德(1996年)。DOS-Windows 启动过程. 常见问题答案。
- 乔纳森·德·博因·波拉德(2011年)。PC/AT 启动过程. 常见问题答案。
- 乔纳森·德·博因·波拉德(2006年)。EFI 启动过程. 常见问题答案。
- 乔纳森·德·博因·波拉德(2006年)。ARC 启动过程. 常见问题答案。
- 乔纳森·德·博因·波拉德(2006年)。Windows NT 6 启动过程. 常见问题答案。
答案2
主引导程序是位于 MBR 上的引导程序。辅助引导程序位于其中一个分区上,由主引导程序启动。
例如,在双启动 Linux 和 Windows 系统中,grub 将是主引导加载程序,如果选择了 Windows,则会加载辅助 Windows 引导加载程序。