![主引导加载程序和辅助引导加载程序](https://linux22.com/image/1395240/%E4%B8%BB%E5%BC%95%E5%AF%BC%E5%8A%A0%E8%BD%BD%E7%A8%8B%E5%BA%8F%E5%92%8C%E8%BE%85%E5%8A%A9%E5%BC%95%E5%AF%BC%E5%8A%A0%E8%BD%BD%E7%A8%8B%E5%BA%8F.png)
从http://www.ibm.com/developerworks/library/l-bootload/index.html
引导加载程序通常以以下两种方式之一进行配置:作为主引导加载程序或作为辅助引导加载程序。
主引导加载程序是引导加载程序的第一阶段在 MBR 上安装的地方(根据前面的描述)。
辅助引导加载程序是第一的引导加载程序的阶段安装到可引导分区上。
单独的引导加载程序然后必须将其安装到 MBR 中,并配置为将控制权传递给辅助引导加载程序。
应该在“辅助引导加载程序是第一的引导加载程序的阶段安装到可引导分区”应该改为“第二”吗?
辅助引导加载程序存储在哪里?不在存储主引导加载程序的 MBR 中吗?
最后一句中的“单独的引导加载程序”是什么意思?它是主引导加载程序还是辅助引导加载程序?
主引导加载程序与初始程序加载程序(IPL,在同一链接中提到)是相同的概念吗?
由于 BIOS 可以访问的数据量非常小,大多数引导加载程序分两个阶段加载。在引导的第一阶段,BIOS 加载引导加载程序的一部分,称为初始程序加载程序或 IPL。IPL 询问分区表,随后能够加载各种介质上可能存在的数据。此操作最初用于定位第二阶段引导加载程序,该加载程序保存了加载程序的其余部分。第二阶段引导加载程序是引导加载程序的真正核心;许多人认为它是引导加载程序唯一真正的部分。它包含加载程序中占用更多磁盘空间的部分,例如用户界面和内核加载程序。这些用户界面可以是简单的命令行,也可以是功能齐全的 GUI。
谢谢!
答案1
实际上,这段文字中存在歧义。主引导加载程序并不意味着引导加载程序的第一阶段,辅助引导加载程序并不意味着引导加载程序的第二阶段。
引导加载程序的第一阶段是驻留在 MBR 数据中的程序,该数据包含分区信息和处理非常基本的磁盘 I/O 操作的能力,这些操作无法完成以完全加载操作系统,因为 MBR 引导加载程序代码大小限制为标准 MBR 记录的 448 字节(对于特定的操作系统实现,这个数字会更低,因为分区表包含 4*16 字节)
引导加载程序第一阶段的工作只是加载第二阶段,第二阶段现在了解操作系统的具体信息,并且具有更多的代码空间。据我记得,NTFS 第二引导加载程序有 16 个 512 字节扇区来加载操作系统内核,8 KB。
当有多个操作系统可供选择启动时,就会出现主要和次要术语。每个操作系统都有其引导加载程序,该加载程序具有第一阶段和第二阶段,每个引导加载程序都应从第一阶段开始,因为 MBR 中的主引导加载程序不应该知道每个引导加载程序中第二阶段的具体情况。
第二阶段存储在分区本身的开始处,称为 VBR(卷引导记录)。
当只有一个操作系统需要启动时,MBR 程序 (IPL) 是第一阶段,VBR 程序是第二阶段。当有多个操作系统时,MBR 程序将成为主引导加载程序的第一阶段,该阶段知道某个分区中有一些代码,这是第二阶段,用于完全加载整个菜单和选项,并加载它。第二阶段知道哪些分区有 VBR,并继续 VBR,现在 VBR 成为辅助引导加载程序。
是的,我说的是“每个引导加载程序都应该从第一阶段开始,因为 MBR 中的主要引导加载程序不应该知道每个引导加载程序中第二阶段的细节。”这就是为什么 VBR 代码本身也包含 MBR 代码。Windows VBR 代码有它。
答案2
不仅有带有磁盘和 MBR 的 PC。主、次、三级引导加载程序通常以更通用的形式出现,也出现在具有非易失性引导内存且没有任何文件系统的主板上。
即,在嵌入式世界中,主引导加载程序通常是 SoC 中的 ROM 引导加载程序,次引导加载程序是第一个加载的程序,通常很小,能够初始化外围设备和 DDR 并加载操作系统。在 PC 中,次引导加载程序可以看作是 MB 固件,它初始化 DDR 并加载另一个引导加载程序/管理器作为 GRUB。