从上个星期开始,我对grub第一阶段引导加载程序(只有446字节)如何能够搜索第二阶段的问题感到困惑,而第二阶段是在一个复杂的文件系统中!它是如何定位第二阶段的?
当windows和linux的复杂分区方案就绪,并且linux系统完全在扩展分区中,那么阶段1如何找到阶段2?甚至1.5阶段?
所有的grub教程都略过了这个重要的部分。我在互联网上搜索过,但找不到任何解释这一点的东西。遗憾的是,我不是一个汇编程序员。
我想从引导过程中硬盘的哪些扇区被触发(以及大致如何触发)的角度来理解引导过程。*请在这里给我指出一个好的资源或答案。它将极大地帮助我聪明地玩grub *
Some Resources searching:
- Linux如何工作:每个超级用户都应该知道的
- http://www.dedoimedo.com/computers/grub.html
- 一些过去的stackoverflow问题
阶段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有时会卡在那里。