跳过正文
  1. 笔记/
  2. 系统底层/

MBR 分区方案

·1154 字·3 分钟· loading · loading · · ·
ICE345
作者
ICE345
CS Student | System | Linux | OCaml
MBR(Master Boot Record,主引导记录)是磁盘最前面的一个扇区,其中包含传统 BIOS 启动所需的引导代码、传统分区表和启动签名。MBR 既可以指这个扇区,也常被用来指代一种传统的分区方案;阅读时要根据上下文区分这两个含义。
Legacy BIOS 启动结构

1. MBR 的结构
#

MBR 的第一个扇区通常为 512 字节,结构如下:

446 字节:引导代码
 64 字节:4 个传统分区表项
  2 字节:启动签名 0x55AA
  • 引导代码:由 BIOS 加载到内存后执行,用于寻找并加载后续启动代码。
  • 分区表:记录传统分区的起始位置、大小和类型等信息。
  • 启动签名:BIOS 用它判断该扇区是否像一个可启动的引导扇区。

446 字节不足以容纳完整的 GRUB。因此,在 Legacy BIOS + MBR 的场景中,GRUB 通常还要使用 MBR 与第一个分区之间的嵌入区域,或从文件系统中继续加载 core.img 和模块。

2. MBR 与双系统启动
#

Linux 和 Windows 共存时,关键问题是 BIOS 首先执行哪一份引导代码。

  • 如果 MBR 中是 Windows 的引导代码,启动流程通常会进入 Windows Boot Manager。
  • 如果将 GRUB 安装到 MBR,GRUB 可以显示菜单,让用户选择 Linux 内核或 Windows Boot Manager。
  • 安装 GRUB 会替换 MBR 中原有的引导代码区域,但不会自动覆盖整个 MBR,也不会因此删除分区中的文件。分区表仍然位于同一扇区的独立区域,安装前仍应做好备份。
  • 如果 MBR 引导代码损坏,分区中的数据不一定消失,但 Legacy BIOS 从这块磁盘启动的路径会中断。

GRUB 是否能自动发现其他操作系统,还取决于发行版配置和 os-prober 等工具,不能把“安装 GRUB”理解成一定会自动生成完整的双系统菜单。

3. MBR 后的嵌入区域
#

当分区从对齐后的位置开始时,MBR 与第一个分区之间可能存在一段未分配空间,通常称为 post-MBR gap嵌入区域。GRUB 可以在满足条件时把 core.img 的一部分放入这里。

不过,这段空间的大小和是否可用取决于磁盘布局与分区工具。旧教程中常见的“永远是第 1 到第 63 个扇区”或“所有 GRUB 都固定有 Stage 1.5”并不适用于所有 GRUB 2 安装。

Legacy BIOS
MBR 中的 boot.img / 小型引导代码
嵌入区域中的 core.img(如果使用)
/boot/grub 中的模块和 grub.cfg
Linux 内核与 initramfs

这里的 Stage 1 / Stage 1.5 / Stage 2 是便于理解的历史称呼。现代 GRUB 2 更适合用 boot.imgcore.img、模块和配置文件来描述。

4. MBR 分区方案的限制
#

  • 传统分区表最多直接描述 4 个主分区;需要更多分区时通常要使用扩展分区和逻辑分区。
  • 可寻址的磁盘容量受到扇区大小、地址字段和工具实现的限制。
  • 分区表的备份与一致性校验能力不如 GPT 完善。
  • 在大容量磁盘和 UEFI 新装系统中,GPT 通常比 MBR 更合适。

5. 总结
#

  • MBR 的第一个扇区同时包含引导代码、传统分区表和启动签名。
  • MBR 的 446 字节引导代码区域无法容纳完整的 GRUB。
  • MBR 后的嵌入区域在可用时可以帮助 GRUB 保存或加载 core.img
  • 将 GRUB 安装到 MBR 是替换引导代码,不是覆盖整个磁盘,也不是删除原有分区。
  • MBR、GPT、Legacy BIOS、UEFI 和 GRUB 的完整关系,请参阅Linux 启动流程:从固件、分区与 GRUB 到内核

相关文章


评论