我想了解Linux的启动过程。让我展示一下我现在对此的理解,这当然可能是错误的:
设备通电后,BIOS 会处理 POST,初始化并测试必要的硬件。成功完成后,BIOS 会将 MBR 加载到 RAM 并将控制权传递给它。
MBR 有一些用于引导加载程序的内存区域。对于 GRUB,该区域用于第一阶段引导加载程序,该加载程序正在检查分区表以查找哪个分区被标记为活动分区。确定之后,就继续前进。但我的理解有一个误区。据我了解,有以下几种可能性:
- MBR 将控制权传递给活动分区的 VBR,然后该分区正在加载辅助引导加载程序。对于 GRUB 来说,它是位于 MBR 间隙的阶段 1.5 或位于某处的阶段 2,
- MBR 将控制传递给阶段 1.5 引导加载程序,然后阶段 1.5 引导加载程序将控制传递给阶段 2 引导加载程序,
- MBR 将控制直接传递给第 2 阶段引导加载程序。
是什么决定了采取哪一个步骤?我们什么时候需要将 bootloader 拆分为阶段 1.5 和阶段 2,什么时候需要 VBR 等?这一切都依赖于发行版吗?据我了解,阶段1.5仅用于加载文件系统的驱动程序,这允许阶段2使用文件。
BIOS 和 MBR、MBR 和 VBR、VBR 和 stage1.5 等之间的所有转换都是通过链式加载处理的吗?