从过去的一周开始,我对一个问题感到困惑,即只有 446 字节的 grub 第一阶段引导加载程序如何能够搜索第二阶段,而第二阶段是在一个复杂的文件系统中!它是如何定位第二阶段的?
当有windows和linux的复杂分区方案,而linux系统完全在扩展分区中,那么stage 1如何找到stage 2呢?甚至是 1.5 阶段?
所有 grub 教程都会略过这个重要部分。我在互联网上进行了搜索,但找不到任何可以解释这一点的内容。遗憾的是,我不是汇编程序员。
我想根据启动过程中硬盘的哪些扇区被触发(以及大致如何触发)来详细了解启动过程。 *请给我指出一个好的资源或在这里回答。这将极大地帮助我明智地使用 grub。*
搜索的一些资源:
- Linux 的工作原理:每个 super 用户都应该知道的,作者:Brian Ward
- http://www.dedoimedo.com/computers/grub.html
- 过去的一些 stackoverflow 问题。
最佳答案
第 1 阶段“知道”第 2 阶段的位置是通过嵌入其中的 block 列表加载表中的条目。它从引导驱动器加载 block 列表,然后以 16 位实模式跳转到指定的 CS:IP。这些在嵌入式数据页面中进行了描述。它查询 BIOS 的磁盘几何结构,并将那里的线性 block 编号映射到 INT 13h BIOS 接口(interface)使用的 C:H:S 地址。
http://www.uruk.org/orig-grub/technical.html
还有很多时间需要新的磁盘对齐,MBR 和第一个分区之间只有不到 1-2 MB 的未分配空间,而第 2 阶段有时会卡在那里。
关于linux - GRUB 的第 1 阶段引导加载程序如何加载第 2 阶段引导加载程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16482496/