メインコンテンツへスキップ
  1. ノート/
  2. システム底层/

MBR パーティション方式

·2426 文字·5 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml
この記事は中国語版をもとにした日本語版メモです。コマンド、コード、数式、画像リンクは原文の意味を壊さないように保持し、説明文と見出しを日本語向けに整理しています。
MBR(主引导记录) 结构つまり主引导コード+パーティション表(+post-mbr gap)主引导コード つまり专门负责用来加载システム到メモリ中的,パーティション表 つまり一个磁盘的整体布局。post-mbr gap つまり用来过渡引导的阶段 1 和阶段 2 的。もしつまり,主引导记录用来引导 GRUB,==则就会出现 grub 的コード覆盖了原本的主引导的原先コード。==
p17

1. MBR 结构:
#

  • 主引导记录 (MBR) 由两个主要部分组成:
  1. 主引导コード (446 字节):此部分包含负责将操作システム或其他引导加载程序(如 GRUB)加载到メモリ中的引导加载程序コード。
  2. パーティション表 (64 字节):此部分包含磁盘パーティション的布局,包括其起始和结束位置。
  3. MBR(主引导记录) 设置中,磁盘布局在 MBR(占用前 512 个字节)和磁盘上的第一个パーティション之间留下一小块未使用的空间。此空间通常称为 后 MBR 间隙(post-mbr gap),通常约为 31 KB。此间隙用于存储 BIOS 在启动过程中加载的额外引导加载程序コード。(==そのため从这里可知: 单纯靠 mbr 无法完整引导システム,そのため要靠 post-mbr gap 来将阶段 1 过渡到阶段 2)

もし MBR 的主引导コード部分为空或已损坏,则システム将无法加载任何操作システム,なぜなら没有コード来指示システム如何继续引导过程。パーティション表可能仍然完好无损,但もし没有引导コード,システム将不知道如何从这些パーティション启动引导。

2. 启动具有双操作システム(GRUB 和 MBR)的システム
#

  • 当您拥有双システム(たとえば Linux 和 Windows)时,引导加载程序是必需的,以便提供选择要启动哪个操作システム的方法。
  • もし MBR 包含标准引导加载程序(如默认的 Windows 引导加载程序),它将仅启动默认操作システム(在本例中为 Windows),而不提供选择其他操作システム的菜单。
  • 另一方面,GRUB 是一种更高级的引导加载程序,できます检测多个操作システム。もし MBR 中インストール了 GRUB,它将加载并提供启动菜单,允许您选择要启动哪个操作システム。

もし MBR 不包含 GRUB(或任何启动管理器):
#

  • 没有启动管理器菜单:もし MBR 中没有インストール GRUB(或其他启动管理器,如 rEFInd 或 LILO),您将没有菜单来选择要启动哪个操作システム。システム将直接启动到与已インストール的引导加载程序关联的默认操作システム。
  • Windows 引导加载程序:たとえば,もし Windows 引导加载程序 位于 MBR 中,它将直接启动到 Windows,而不提供启动 Linux 的选项。

3. GRUB 和引导管理器角色
#

  • GRUB インストール在 MBR 中时,它会用自己的コード替换默认引导コード,该コードできます:
  • 检测多个操作システムインストール(たとえば Linux 和 Windows)。
  • 在启动期间显示启动菜单,允许您选择要启动的操作システム。

もし您在设置双システム后インストール GRUB,GRUB 通常会扫描其他已インストール的操作システム(如 Windows)并将其追加到其启动菜单中。もし MBR 不包含 GRUB 或任何其他引导管理器,您将只能启动与 MBR 中存在的引导加载程序关联的操作システム(たとえば,もし Windows 引导加载程序存在,则为 Windows)。

结论
#

  • もし您的 MBR 为空,您将根本无法启动システム。
  • もし您有 双システム,但 GRUB(或其他启动管理器) 未インストール在 MBR 中,您将无法获得启动菜单来选择要启动的操作システム。システム将默认使用现有的任何引导加载程序(たとえば,Windows 引导加载程序),这可能会自动加载一个操作システム而不显示另一个システム的任何选项。

要启用双启动功能,在 MBR 中インストール像 GRUB 这样的启动管理器是必不可少的。


补充説明 post-mbr gap
#

流程
#

  1. 第 1 阶段引导加载程序执行
  • 第 1 阶段引导加载程序(MBR 中的小引导コード)非常有限。它的工作是定位和加载引导加载程序的下一阶段,通常称为第 1.5 阶段或直接称为第 2 阶段
  • 由于 MBR 只有 446 字节的空间,そのため它无法容纳完整的引导加载程序(如 GRUB 或其他引导管理器),也无法容纳直接引导操作システム所需的复杂コード。
  1. MBR 后间隙(也称为“嵌入区域”):
  • 在 MBR 之后,MBR 与磁盘上的第一个パーティション之间通常存在间隙。此间隙通常称为 MBR 后间隙嵌入区域
  • 传统 BIOS-MBR 引导 中,此间隙为引导加载程序的 第 1.5 阶段 コード提供了额外的空间。第 1.5 阶段コード是必需的,なぜなら:
  • 它包含理解磁盘上ファイルシステム的コード。
  • 它提供加载完整 第 2 阶段引导加载程序 所需的额外功能。
  • 此间隙通常介于 30 KB 到 60 KB 之间,具体取决于パーティション方案和引导加载程序。
  1. 阶段 1.5 引导加载程序
  • 阶段 1.5 是 MBR 中最小 阶段 1 引导加载程序 与完整 阶段 2 引导加载程序 之间的桥梁。
  • 它位于 MBR 后间隙中,包含理解存储 阶段 2 引导加载程序的ファイルシステム(たとえば ext 4、NTFS 等)所需的基本驱动程序或コード。
  • たとえば,在 GRUB 的情况下,阶段 1.5 允许 GRUB 访问包含完整 /boot/grub ディレクトリ的パーティション。
  1. 阶段 2 引导加载程序
  • 一旦加载 阶段 1.5,它就会找到完整的 阶段 2 引导加载程序,该程序通常存储在操作システムパーティション上的 /boot ディレクトリ中。
  • 第 2 阶段 是完整的引导加载程序(たとえば GRUB 或 LILO),它:
  • 显示引导菜单(もし設定了多个操作システム)。
  • 将所选操作システム的内核加载到メモリ中。
  • 将控制权移交给内核以引导システム。
  1. 操作システム内核
  • 一旦 第 2 阶段引导加载程序 将内核加载到メモリ中,它就会开始执行内核,从而接管引导过程、初始化硬件、加载驱动程序并最终引导システム。

为什么后 MBR 间隙很重要?
#

  • MBR 引导コード 只有 446 个字节,非常小,不足以加载完整的引导加载程序(如 GRUB)。
  • 后 MBR 间隙 为引导加载程序的コード(第 1.5 阶段)提供了额外的空间,而这些空间无法容纳在 MBR 本身中。
  • 使用 MBR 磁盘 时,此间隙对于 基于 BIOS 的启动 至关重要,なぜなら它包含读取磁盘ファイルシステム和加载完整引导加载程序所需的コード。

関連記事