GRUB的第1阶段引导加载程序如何加载第2阶段引导加载程序?

cod*_*n48 6 linux grub bootloader

从过去的一周开始,我很困惑的问题是,当第二阶段处于复杂的文件系统时,grub第一阶段启动加载器(仅446字节)如何能够搜索第二阶段!它如何定位第二阶段?

当windows和linux的复杂分区方案到位,并且linux系统完全在扩展分区中时,第1阶段如何找到第2阶段?即使是1.5阶段?

所有grub教程都浏览了这个重要部分.我通过互联网搜索但找不到任何解释这个的东西.可悲的是,我不是集会程序员.

我想要了解启动过程中硬盘的哪些扇区(以及大致如何)的复杂启动过程.*请指出一个很好的资源或在这里回答.它将极大地帮助我明智地玩grub.*

搜索的一些资源:

  1. Linux如何工作:Brian Ward应该知道每个超级用户应该知道什么
  2. http://www.dedoimedo.com/computers/grub.html
  3. 一些过去的stackoverflow问题.

Wor*_*lux 4

第 1 阶段通过嵌入其中的块列表加载表中的条目“知道”第 2 阶段的位置。它从启动驱动器加载块列表,然后以 16 位实模式跳转到指定的 CS:IP。这些在嵌入数据页面中进行了描述。它向 BIOS 查询磁盘几何结构,并将线性块编号映射到 INT 13h BIOS 接口使用的 C:H:S 地址。

http://www.uruk.org/orig-grub/technical.html

此外,新磁盘对齐也需要花费大量时间,MBR 和第一个分区之间只有不到 1-2 MB 的未分配空间,而第 2 阶段有时会卡在那里。