计算机按下电源键之后,到操作系统登录界面出现,中间到底发生了什么?
为什么有的硬盘用 MBR,有的用 GPT?
装系统时总会看到 ESP 分区、EFI 分区,这又是什么东西?
这篇文章尝试用相对直白的语言,系统地梳理 BIOS / UEFI、MBR / GPT、ESP 等概念,以及它们之间是如何配合完成“从按电源到进入系统”这一过程的。
1. 启动流程概览
先从整体流程看一下,一台现代 PC 从按下电源到进入操作系统,大致可以分成几步:
- 上电自检(POST):主板固件初始化硬件(CPU、内存、显卡等),检查是否正常。
- 寻找可启动设备:按启动顺序在硬盘、U 盘、网络等设备里找“可启动介质”。
- 加载启动加载程序:
- 传统:BIOS 从硬盘读取 MBR(磁盘开头 512 字节),跳转到其中的引导代码。
- 现代:UEFI 直接从指定分区(通常是 ESP)加载
.efi启动程序。
- 启动加载程序接管:比如 GRUB、Windows Boot Manager、systemd-boot 等,负责展示启动菜单、加载内核。
- 加载操作系统内核:内核开始运行,并进一步初始化系统、挂载根文件系统,最终进入图形界面或登录界面。
接下来,我们按几个关键概念拆开讲。
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。
- 通过 NVRAM 启动项 指定“从哪个
- 支持安全启动(Secure Boot):可通过签名机制限制只能加载可信的启动程序 / 内核。
在 UEFI 模式下,固件不再像 BIOS 那样只读一小块 512 字节的 MBR 引导代码,而是:
- 识别磁盘上的 分区表(通常是 GPT)。
- 找到其中标记为 EFI System Partition(ESP) 的分区。
- 在 ESP 的 FAT32 文件系统中,按 NVRAM 中的记录,去加载对应的
.efi启动文件。
4. MBR:传统分区表与引导扇区
MBR(Master Boot Record,主引导记录) 其实是两个概念合在一起:
- 分区表结构:描述磁盘上有哪些分区、每个分区的起止位置。
- 引导代码:一小段机器码(通常 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.efi或EFI/fedora/grubx64.efi等 - UEFI 启动菜单里会多出 “Windows Boot Manager” 和 “Ubuntu”等条目。
- Windows:
10. 小结:如何在脑中建立正确的模型?
可以用一句话把本文的核心关系串起来:
UEFI / BIOS 是“主板里的程序”,MBR / GPT 是“磁盘上的分区表格式”,ESP 则是“UEFI 模式下存放启动文件的专用分区”。
更形象一点的关联:
- 固件层:负责上电、自检、提供接口、决定“从哪里启动”
- 传统:BIOS
- 现代:UEFI
- 磁盘结构层:负责描述“磁盘如何被切块使用”
- 传统:MBR
- 现代:GPT
- 启动文件层:真正的“程序入口”存放在哪里
- BIOS 模式:MBR 第一扇区中的引导代码 + 后续扇区
- UEFI 模式:ESP 分区里的
.efi文件
理解了这三层的职责和组合方式,再遇到装系统、迁移系统、双系统、磁盘转换等问题,会更容易判断“问题出在哪一层”,从而做出更安全、正确的操作。
在实际处理装机、分区规划或排查相关报错时,可以先根据本文梳理的这三层模型,判断问题大致出现在固件层、磁盘结构层还是启动文件层,再有针对性地选择合适的工具和操作步骤。