计算机按下电源键之后,到操作系统登录界面出现,中间到底发生了什么?
为什么有的硬盘用 MBR,有的用 GPT?
装系统时总会看到 ESP 分区、EFI 分区,这又是什么东西?

这篇文章尝试用相对直白的语言,系统地梳理 BIOS / UEFI、MBR / GPT、ESP 等概念,以及它们之间是如何配合完成“从按电源到进入系统”这一过程的。


1. 启动流程概览

先从整体流程看一下,一台现代 PC 从按下电源到进入操作系统,大致可以分成几步:

  1. 上电自检(POST):主板固件初始化硬件(CPU、内存、显卡等),检查是否正常。
  2. 寻找可启动设备:按启动顺序在硬盘、U 盘、网络等设备里找“可启动介质”。
  3. 加载启动加载程序
    • 传统:BIOS 从硬盘读取 MBR(磁盘开头 512 字节),跳转到其中的引导代码。
    • 现代:UEFI 直接从指定分区(通常是 ESP)加载 .efi 启动程序。
  4. 启动加载程序接管:比如 GRUB、Windows Boot Manager、systemd-boot 等,负责展示启动菜单、加载内核。
  5. 加载操作系统内核:内核开始运行,并进一步初始化系统、挂载根文件系统,最终进入图形界面或登录界面。

接下来,我们按几个关键概念拆开讲。


2. BIOS:传统固件时代

  • BIOS(Basic Input/Output System) 是最早期 PC 上的固件接口,存放在主板的 ROM / Flash 芯片中。
  • 上电后,由 CPU 固定从某个地址执行 BIOS 里的初始化代码。
  • 核心职责:
    • 硬件自检(POST)
    • 提供简单的中断服务(读键盘、磁盘 IO 等)
    • 在磁盘中寻找可启动设备,读取 MBR,执行其中的引导代码。

BIOS 的局限

  • 只能以传统的 16 位实模式 启动,内存寻址受限。
  • 启动磁盘通常采用 MBR 分区表,单磁盘最大约 2TB、最多 4 个主分区。
  • 扩展性、安全性(比如安全启动)、图形化配置等都比较弱。

这也是为什么后来出现了新的标准 —— UEFI


3. UEFI:现代启动固件接口

UEFI(Unified Extensible Firmware Interface) 是 Intel 发起的、取代传统 BIOS 的现代固件接口标准。

从使用者角度看,有几个显著区别:

  • 图形化界面:大多数主板的“BIOS 设置界面”其实已经是 UEFI 图形界面。
  • 支持 64 位模式、更多内存:更适合现代硬件。
  • 直接理解文件系统:UEFI 固件可以直接读 FAT32 文件系统,加载 .efi 文件。
  • 更灵活的启动方式
    • 通过 NVRAM 启动项 指定“从哪个 .efi 文件启动”;
    • 支持多个 OS 并存,无需各自抢占 MBR。
  • 支持安全启动(Secure Boot):可通过签名机制限制只能加载可信的启动程序 / 内核。

在 UEFI 模式下,固件不再像 BIOS 那样只读一小块 512 字节的 MBR 引导代码,而是:

  1. 识别磁盘上的 分区表(通常是 GPT)
  2. 找到其中标记为 EFI System Partition(ESP) 的分区。
  3. 在 ESP 的 FAT32 文件系统中,按 NVRAM 中的记录,去加载对应的 .efi 启动文件。

4. MBR:传统分区表与引导扇区

MBR(Master Boot Record,主引导记录) 其实是两个概念合在一起:

  1. 分区表结构:描述磁盘上有哪些分区、每个分区的起止位置。
  2. 引导代码:一小段机器码(通常 446 字节),负责把控制权转交给真正的启动加载器(比如后续扇区中的 GRUB)。

MBR 位于 磁盘的第 0 个扇区(LBA 0),总大小 512 字节:

  • 0–445 字节:引导代码。
  • 446–509 字节:分区表(最多 4 条主分区项)。
  • 510–511 字节:签名 0x55AA

MBR 的主要限制

  • 使用 32 位 LBA,单盘最大约 2TB
  • 只有 4 个主分区,如果想要更多,需要用“扩展分区 + 逻辑分区”的方式,结构复杂。
  • 没有冗余,MBR 损坏后恢复较困难。

所以在大容量磁盘和新架构的需求下,GPT 逐渐取代了 MBR。


5. GPT:现代分区表格式

GPT(GUID Partition Table) 是 UEFI 规范的一部分,是为了解决 MBR 的各种限制而设计的现代分区表格式。

GPT 的特点:

  • 使用 64 位 LBA 地址,理论上可以支持非常大的磁盘容量(远超普通使用场景)。
  • 分区数量大幅增加,常见实现默认支持 128 个分区(甚至更多)。
  • 每个分区都有:
    • 分区类型 GUID(描述用途,比如 ESP、Linux 文件系统、Windows 数据分区等)
    • 唯一分区 GUID(区分不同分区)
  • 具有 主分区表 + 备份分区表
    • 主 GPT 头和分区表在磁盘开头附近;
    • 备份 GPT 头和分区表在磁盘末尾;
    • 提高了可靠性,支持通过校验和检测损坏。

值得注意的是:

  • 为了兼容老旧 BIOS / 工具,GPT 磁盘的第一个扇区依然保留一个“保护 MBR(protective MBR)”,表示整个磁盘是一个占满全盘的大分区,防止只识别 MBR 的工具误以为磁盘是“空的”而随意写入。

6. ESP:EFI System Partition(EFI 系统分区)

在 UEFI + GPT 的世界里,一个非常核心的概念就是 ESP(EFI System Partition)

ESP 是什么?

  • ESP 是 GPT 上的一种特殊类型分区(有特定的分区类型 GUID),通常是 FAT32 文件系统
  • 它是 UEFI 固件读取启动文件的“根目录”。
  • UEFI 固件会在 ESP 中查找并加载各种 .efi 可执行文件作为启动入口。

ESP 里一般有什么?

典型目录结构类似:

/EFI
  /Microsoft
    /Boot
      bootmgfw.efi       # Windows 启动管理器
  /Boot
    bootx64.efi          # 通用默认启动文件
  /Linux
    grubx64.efi          # GRUB 启动器
    shimx64.efi          # 用于 Secure Boot 的 shim

不同操作系统会在 ESP 里放自己的启动文件,但都遵循 UEFI 规范:
固件按照 NVRAM 启动项中记录的路径(如 \EFI\Microsoft\Boot\bootmgfw.efi)去加载对应的 .efi 文件。

ESP 的大小和数量:

  • 常见大小在 100MB ~ 500MB 左右,一般不需要太大。
  • 理论上可以有多个 ESP,但实际使用中,大多数场景一个磁盘上只保留一个 ESP 即可,多系统共用。

7. BIOS+MBR vs UEFI+GPT:两代启动体系对比

可以用一张表总结两代启动体系的主要差异:

维度 BIOS + MBR UEFI + GPT
固件接口 16 位传统接口,通过中断调用,功能相对有限 32/64 位可扩展接口,可加载驱动与应用,支持图形界面和网络等
分区表格式 经典 MBR,最多 4 个主分区,如需更多要用扩展分区 现代 GPT,默认可支持大量分区(如 128 个),每个分区有类型 GUID 和唯一 GUID
启动入口 从磁盘第一个扇区(MBR)读取 512 字节引导代码,再跳转到后续扇区 从 GPT 上标记为 ESP 的分区中读取 FAT32 文件系统中的 .efi 启动文件
磁盘容量 受 32 位 LBA 限制,单盘最大约 2TB 使用 64 位 LBA,理论上可支持远超日常需求的大容量磁盘
可靠性 MBR 只有一份记录,损坏后恢复较困难 有主/备份 GPT 头和分区表,并有校验和,可检测和一定程度修复损坏
多系统体验 多系统容易相互覆盖 MBR 引导代码,管理复杂 多个系统各自放 .efi 启动文件在 ESP 中,由 UEFI 启动菜单或启动管理器统一管理,互不干扰
安全特性 无原生安全启动机制,依赖后续加载器实现 支持 Secure Boot 等安全机制,可通过签名限制只加载可信的启动程序和内核
兼容性模式 老系统和老工具广泛支持 绝大多数新硬件默认支持,可在需要时切换到 Legacy 模式以兼容 BIOS+MBR 启动

8. 安装操作系统时常见的几种情况

在实际装系统时经常遇到的一些问题,也可以用上述知识来解释。

8.1 “此磁盘选定的磁盘具有 MBR 分区表。在 EFI 系统中,Windows 只能安装到 GPT 磁盘上。”

这是因为:

  • 当前机器以 UEFI 模式 启动安装程序; +- Windows 在 UEFI 模式下要求系统磁盘使用 GPT 分区表; +- 如果目标磁盘是 MBR,就会出现这样的提示。

解决办法通常是:

  • 备份数据;
  • 在安装程序或其他分区工具中把磁盘转换为 GPT(会清空分区);
  • 重新安装系统,安装程序会自动创建 ESP、MSR、系统分区等。

8.2 “磁盘是 GPT,但 BIOS 只支持 Legacy 模式”

老旧主板只支持 Legacy BIOS 而不支持 UEFI 时:

  • BIOS 无法识别 GPT,只认 MBR;
  • 这种情况下,要么:
    • 把磁盘转换成 MBR;
    • 要么更换支持 UEFI 的主板 / 升级固件。

9. 多系统(双系统 / 多系统)启动简要说明

在 UEFI+GPT+ESP 的组合下,多系统共存变得相对优雅:

  • 所有系统共用一个 ESP 分区
  • 不同系统在 ESP 里放自己的 .efi 启动文件;
  • UEFI 固件中保存多条启动项(Boot Entries),指向不同 .efi 文件;
  • 用户可以在主板启动菜单中选择启动项,也可以由某个启动管理器(如 GRUB)统一管理不同系统。

常见组合示例:

  • Windows + Linux:
    • Windows:EFI/Microsoft/Boot/bootmgfw.efi
    • Linux + GRUB:EFI/ubuntu/grubx64.efiEFI/fedora/grubx64.efi
    • UEFI 启动菜单里会多出 “Windows Boot Manager” 和 “Ubuntu”等条目。

10. 小结:如何在脑中建立正确的模型?

可以用一句话把本文的核心关系串起来:

UEFI / BIOS 是“主板里的程序”,MBR / GPT 是“磁盘上的分区表格式”,ESP 则是“UEFI 模式下存放启动文件的专用分区”。

更形象一点的关联:

  • 固件层:负责上电、自检、提供接口、决定“从哪里启动”
    • 传统:BIOS
    • 现代:UEFI
  • 磁盘结构层:负责描述“磁盘如何被切块使用”
    • 传统:MBR
    • 现代:GPT
  • 启动文件层:真正的“程序入口”存放在哪里
    • BIOS 模式:MBR 第一扇区中的引导代码 + 后续扇区
    • UEFI 模式:ESP 分区里的 .efi 文件

理解了这三层的职责和组合方式,再遇到装系统、迁移系统、双系统、磁盘转换等问题,会更容易判断“问题出在哪一层”,从而做出更安全、正确的操作。

在实际处理装机、分区规划或排查相关报错时,可以先根据本文梳理的这三层模型,判断问题大致出现在固件层、磁盘结构层还是启动文件层,再有针对性地选择合适的工具和操作步骤。