BIOS/UEFI 与其分别使用的磁盘分区形式 MBR/GPT
一、传统 BIOS 与现代 UEFI 的对比
核心区别对比表格
BIOS 的工作流程简单介绍如下。首先电脑通电之后会进行开机自检,检查 CPU、内存、硬盘等关键硬件是否正常。随后开始初始化硬件,加载显卡,硬盘等设备的驱动。最后按照设定的启动顺序读取硬盘的第一个扇区(MBR,512 字节),将控制权交给 MBR 里的引导程序(如GRUB、Windows Boot Manager),由引导程序去加载操作系统。
BIOS 具有的主要局限性包括,MBR 分区表对分区数(4个)和磁盘容量(2.2 TB)的限制 ;工作在16位实模式下,无法使用64位保护模式,性能上会落后;由于 BIOS 启动是顺序执行的,不能充分利用多核 CPU 的优势,启动速度会慢;UI 界面简陋无法使用鼠标;安全性差,如果磁盘 MBR 头部代码被病毒修改,直接导致无法启动。
相比之下 UEFI 支持 GPT 分区 ,打破了 MBR 2.2 TB 的容量限制,几乎支持无限大小的硬盘和几乎无限数量的分区(Windows 128个)。UEFI 可以并行初始化硬件,并且跳过了 BIOS 中一些不必要的自检步骤,实现了快速启动。UEFI 可以只加载被数字证书签名的操作系统引导程序,从而有效防止恶意软件在系统启动前感染电脑。这是 Windows 8 及以上版本系统的默认要求。UEFI的驱动和程序不存放在狭小的 ROM 中,而是放在一个独立的EFI系统分区里。这允许它拥有华丽的图形界面、鼠标支持,甚至可以在不进入操作系统的情况下运行一些小程序(如诊断工具、浏览器)。
| 特性 | BIOS | UEFI |
|---|---|---|
| 全称 | 基本输入输出系统 | 统一可扩展固件接口 |
| 诞生年代 | 1975年(非常古老) | 2005年左右(现代) |
| 程序模式 | 16位实模式 | 32位/64位保护模式 |
| 用户界面 | 通常是蓝底白字的纯文本界面,只能用键盘操作 | 图形化界面,支持鼠标操作,更友好 |
| 磁盘分区 | 使用 MBR 主引导记录 | 使用 GPT GUID 分区表 |
| 最大磁盘容量 | 2.2 TB | 近乎无限(理论 9.4 ZB) |
| 启动过程 | 从 MBR 读取代码,启动引导程序 | 直接从 EFI 分区中的文件启动 |
| 启动速度 | 较慢(需要自检所有硬件) | 更快(支持并行初始化、跳过自检) |
| 安全性 | 几乎无安全启动机制 | 支持 安全启动,防止恶意软件在启动前加载 |
| 扩展性 | 差,固件容量有限 | 好,驱动和程序可存储在EFI系统分区中 |
| 网络功能 | 无或非常基础 | 在预启动环境中有较好的网络支持 |
怎么查看自己的电脑是不是 UEFI 呢?Win + R 搜索 msinfo32,在打开的窗口中,查看 BIOS模式 一项,如果显示 UEFI 就说明使用的是 UEFI 模式。
二、MBR 与 GPT 分区表的对比
什么是分区呢?相信大家都很熟悉,我们新买的硬盘在装机之后通常都至少会分为C盘、D盘两个盘,分别用于存放系统数据和软件安装数据或者再分个E盘用于存放个人数据等。这个将物理上一整块硬盘分为逻辑上的几个区块的操作就是分区。MBR 或者 GPT 就是记录了我们磁盘是如何分区的一种规则,比如我们的磁盘分了几个盘,每个盘的起始扇区和结束扇区是什么。
MBR/GPT 本质上是一种规范,模式或者规则。在新磁盘到手之后,我们在使用磁盘管理工具进行磁盘初始化的时候通常就要选择分区模式和文件系统。MBR和GPT是一套规则,是藏在硬盘最前端的"数据结构"。而你在图形界面上看到的操作(新建简单卷、压缩卷、格式化),都是根据这套规则在"填写表格"和"执行命令"。它们就是让一块物理硬盘能够被操作系统识别、管理和使用的"灵魂"。
2.1 MBR 分区表
MBR(主引导记录)是一种在硬盘驱动器第一个扇区得数据结构,它告诉计算机硬盘是如何分区的,以及如何引导操作系统。一个标准的 MBR 包含三个部分:
- **引导代码:**占用前 440 字节。BIOS 在完成自检之后,会读取并执行这段代码,随后这段代码会去查找活动分区,并加载该分区中的更复杂的引导程序,最终启动操作系统。如果这段代码被破坏,电脑将无法从硬盘启动。
- 磁盘分区表:随后的 64 字节。这是 MBR 的核心,记录了磁盘的分区信息。其只能定义 4 个分区表项,每个表项 16 字节,对应一个主分区。
- 引导签名:最后的 2 字节(magic number 0x55AA),BIOS 读取它用于验证 MBR 是否有效。
MBR 的分区表只有一份 ,且存放在磁盘的最开头。如果这个区域损坏,整个磁盘的分区信息都会丢失。并且 MBR 不内置任何安全功能,无法防止MBR被恶意软件篡改(如MBR病毒)。
2.2 GPT 分区表
GPT(全局唯一标识分区表)用于取代传统 MBR 分区方案的新一代磁盘分区标准,源自 UEFI。相比于 MBR,GPT 主要有如下特性:
- 近乎无限大的容量。
- 充足的分区数量。
- 更高的安全性:
- GPT 在磁盘的开头和末尾 都存储了分区表和 GPT 头的备份(冗余),如果主分区表损坏,可以使用备份进行恢复。
- GPT 包含 CRC32 校验和(循环冗余校验),可以检查分区表数据的完整性,及时发现错误。
GPT 磁盘结构:
- 保护性 MBR (Protective MBR):位于磁盘的第一个扇区 (LBA 0),为了兼容性 和安全 考虑而存在。它包含一个特殊的 MBR 分区条目(类型为
0xEE),用来告诉不支持 GPT 的旧系统或工具:这块磁盘已经被占用(是 GPT 磁盘),从而防止它们错误地将其识别为未分区磁盘并进行格式化等破坏性操作。 - GPT 头 (GPT Header):位于磁盘的第二个扇区 (LBA 1)。定义了分区表的位置和大小,并包含 GPT 头和分区表的 CRC32 校验和。
- 分区表项 (Partition Entries):紧随 GPT 头之后。包含了每个分区的详细信息,如:分区类型 GUID (全局唯一标识符,标识分区用途,例如 EFI 系统分区、基本数据分区),分区唯一 GUID (每个分区的独立标识),分区起始/结束的 LBA(逻辑块地址),分区名称等。
- GPT 分区 (GPT Partitions):实际的存储区域。
- 备份 GPT (Backup GPT):位于磁盘的尾部,存储了 GPT 头和分区表的完整备份,用于数据恢复。
| 方面 | MBR(旧) | GPT(新) |
|---|---|---|
| 最大磁盘容量 | ~2.2 TB | 近乎无限(理论 9.4 ZB) |
| 分区数量 | 4个主分区(或3主+1扩展) | 理论上无限制(Windows限制为128个) |
| 安全性 | 无 | 支持 CRC32校验 和利用UEFI的安全启动,防止篡改 |
| 数据冗余 | 分区表只有一份,易丢失 | 在磁盘开头和末尾都存有分区表副本,更健壮 |
| 依赖的固件 | BIOS | UEFI |
查看我们的电脑磁盘使用的是什么分区:右键开始图标(或者win + x),打开磁盘管理,右键点击窗口底部磁盘左侧的标签(如"磁盘0"),选择"属性 "。切换到"卷 "标签页,在"分区样式 "一项中即可看到是 "主引导记录" 还是 "GUID 分区表"。

2.3 BIOS / UEFI 如何识别分区形式
BIOS 的寻找方法。电脑启动之后,BIOS 会无条件地直接去读取硬盘的第一个扇区(512字节),随后查看这个扇区的最后两个字节,看是否是目标的魔数,如果是,就会执行这个扇区前 440 字节的引导程序,去查找活动分区,并加载分区里面更复杂的引导程序,如果不是就认为这个设备不可引导。
UEFI 的寻找方法。UEFI 会直接读取磁盘的第二个扇区,因为 GPT 规则中第一个扇区存放的是保护性 MBR。第二个扇区才是 GPT 主头。GPT主头包含了分区表的位置、大小以及一个非常重要的 CRC32校验和 ,UEFI会自己根据分区表的数据重新计算一遍校验和。如果计算出的结果和GPT头里记录的值匹配 :UEFI就认为这个GPT分区表是完整、有效的。如果不匹配 说明分区表可能已损坏。这时,UEFI会去读取硬盘末尾的GPT备份头,尝试用副本来修复主头。这体现了GPT的健壮性。
在确认GPT分区表有效后,UEFI不会去执行什么扇区里的代码。而是:在GPT分区表中查找一个具有特定 GUID类型 的分区:EFI系统分区 。进入这个分区(它是一个使用 FAT32 文件系统的独立分区),在里面找到并直接运行位于 \EFI\Boot\bootx64.efi 或其他厂商指定路径的 .efi可执行文件,从而启动操作系统。
附录:实模式与保护模式
如果大家之前有学过操作系统,会对物理地址和虚拟地址的概念很熟悉。前面我们说过 BIOS / UEFI 分别工作在16位实模式和保护模式下。x86 的实模式和保护模式有一个核心区别就是寻址方式。
- 实模式使用的是物理寻址:段基址\\times16+偏移地址,受到段基址和偏移地址的限制,最大只能访问 2\^{20} 字节,即 1MB 内存。并且无保护。 任何程序都可以访问和修改内存中的任何位置(包括操作系统核心区域)。
- 保护模式使用的是虚拟寻址 (或称逻辑寻址),通过转换后才得到物理地址。CPU 使用 段选择符 去查表(GDT/LDT)获取 段基址 ,然后将 段基址 加上 偏移地址 得到 线性地址 (虚拟地址)。如果开启了分页 ,线性地址再通过页表 转换为物理地址 。可以访问高达 4 \\text{GB}(32位系统)或 2\^{64} 字节(64位系统)的内存。有内存保护,操作系统可以限制程序访问自己的内存区域,防止一个程序的错误破坏其他程序或内核数据。引入了四个特权级(Ring 0 到 Ring 3),Ring 0 权限最高(留给操作系统内核),从而实现操作系统的隔离和保护。
Steady progress!