【问题标题】:How does GRUB's stage 1 boot loader loads the stage 2 bootloader?GRUB 的第一阶段引导加载程序如何加载第二阶段引导加载程序?
【发布时间】:2013-05-05 03:38:57
【问题描述】:

上周我很困惑,当第二阶段在一个复杂的文件系统中时,只有 446 字节的 grub 第一阶段引导加载程序如何能够搜索第二阶段!第二阶段如何定位?

当windows和linux的复杂分区方案到位,linux系统完全处于扩展分区中,那么stage 1是如何找到stage 2的呢?还是1.5阶段?

所有 grub 教程都略过这个重要部分。我已经搜索了互联网,但找不到任何可以解释这一点的东西。可悲的是,我不是汇编程序员。

我想根据启动过程中硬盘的哪些扇区(以及大致如何)来复杂地了解启动过程。 *请在此处指出一个好的资源或答案。这将极大地帮助我明智地玩 grub。*

搜索了一些资源:

  1. Linux 的工作原理:Brian Ward 的每位超级用户都应该知道的内容
  2. http://www.dedoimedo.com/computers/grub.html
  3. 一些过去的 stackoverflow 问题。

【问题讨论】:

    标签: linux bootloader grub


    【解决方案1】:

    第 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 阶段有时会卡在那里。

    【讨论】:

    • 非常感谢!该文件非常解释,我得到了大局。由于第二阶段位于文件系统上,因此文件系统不应不惜一切代价移动第二阶段(因为地址是绝对 C:H:S。据我所知,如果移动阶段 2,系统将会中断。我是有点混淆了 8GB 磁盘访问限制。第二阶段是否必须在此限制范围内?文档确实提到了与之相关的内容,但我很困惑。
    • 该文档相当旧。 2003 年,48 位寻址模式被引入 ATA 规范(以及大多数 BIOS),允许 BIOS 访问驱动器的前 2 TB。现在 EFI 系统有一个更大的方法来按块寻址驱动器,(更不用说可以在 EFI 中安装文件系统驱动程序,因此在某些情况下可以按名称加载第 2 阶段。当人们有 512MB 的限制时,他们会做通过保留一个完全低于 BIOS 限制的单独 /boot 分区,确保第 2 阶段低于它。
    猜你喜欢
    • 2016-03-22
    • 2019-08-24
    • 2019-07-08
    • 2011-12-04
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2013-10-07
    • 2020-10-21
    相关资源
    最近更新 更多