- MBR 是磁盘的第一个扇区(512 字节),其中包含引导代码、分区表和 0x55AA 签名。
- BIOS+MBR 启动过程基于链式加载:BIOS 加载 MBR,MBR 定位活动分区,然后将控制权交给操作系统加载程序。
- 与 GPT 和 UEFI 相比,MBR 将磁盘容量限制为 2 TiB(逻辑扇区大小为 512 字节),并且只允许四个主分区。
- dd、diskpart、PowerShell 和 bootrec 等工具允许您在 Windows 和 Linux 中复制、转换和修复 MBR 和引导管理器。
在讨论MBR、GPT、BIOS和UEFI时,很容易感到困惑,因为它们混合了硬件、固件、磁盘分区和启动管理器等概念。然而,对主引导记录(MBR)的透彻理解是了解计算机实际启动方式、Windows为何有时会在安装Linux后“消失”以及硬盘限制的关键。
本指南将以通俗易懂的西班牙语,详细解释MBR的定义、结构、BIOS在其中的作用、它与GPT和UEFI的区别、它会导致哪些常见问题、如何在Windows和Linux系统中修复它,以及GRUB和双启动是如何实现的。您还将看到一些实用的命令示例(diskpart、PowerShell、dd等)以及一些实际案例,例如常见的“Windows无法安装到此磁盘;分区表为MBR”。
MBR是什么?它位于哪里?
MBR (主引导记录)是使用传统 BIOS 分区方案划分的硬盘或 SSD的第一个物理扇区。这个第一个扇区通常大小为512 字节,存储在 CHS 位置(柱面 0,磁头 0,扇区 1),或者用现代 LBA 术语来说,存储在扇区 0中。
该扇区不属于任何特定分区:它是一个特殊区域,包含启动系统所需的最小代码以及磁盘划分的基本信息。即使您删除或格式化分区,除非您显式覆盖它,否则MBR 仍会保持不变。
实际上,当谈到 MBR 时,几乎总是指经典 PC 式磁盘的初始 512 字节扇区,尽管该术语有时也用于 IBM 兼容架构中某些分区的引导扇区。
MBR部门的内部结构
在扇区 0 的 512 字节中,并非所有内容都是代码。经典的 MBR 设计保留了三个不同的区域:
- 初始字节数为 446它们包含 主引导代码一个用机器语言(x86 实模式)编写的小程序,在 MBR 加载到内存后立即运行。
- 接下来的 64 字节:形成 分区表由 4 个 16 字节的条目组成,每个条目描述一个主分区。
- 最后 2 个字节他们保留 MBR签名魔法值 0x55AA,BIOS 使用该值来检查读取的扇区是否为有效的引导扇区。
在某些系统中,代码区内,具体来说是第 440 字节到第 446 字节之间,还存储着一个4 字节的磁盘签名(磁盘 ID 或磁盘签名)。Windows NT/2000 及更高版本,以及 Linux(内核 2.6 及更高版本)都使用此签名来识别特定磁盘,并将其与驱动器号、启动卷等关联起来。
分区表中每个条目的格式
MBR分区表中的四个16字节条目中的每一个都包含如下数据:
- 国家体制 (字节 0x00):指示分区是否处于活动/可引导状态。
- CHS初始 (0x01):第一个分区扇区的柱面/柱头/扇区。
- 隔断类型 (0x04):定义类型(FAT32、NTFS、Linux、扩展等)。
- CHS 决赛 (0x05):分区的最后一个 CHS 地址。
- 初始 LBA (0x08,4 字节):分区开始的逻辑扇区。
- 扇形长度 (0x0C,4 字节):扇区总数。
按照惯例, MBR 中只有四个主要条目。为了克服这一限制,人们发明了扩展分区:其中一个条目指向一个特殊分区,该分区链接了分布在磁盘上的更多描述符,从而允许创建多个逻辑分区。
BIOS 如何干预使用 MBR 启动?

在采用BIOS 和 MBR 方案的经典 PC 中,启动顺序(简单来说)如下:
- 当打开时, CPU运行BIOS,存储为 固件 位于主板上的芯片(EPROM、闪存等)。
- BIOS 执行以下操作: 启动自检 (POST),检查内存(计算机内存的类型),CPU,基本设备并读取存储在CMOS中的配置。
- 然后,按照配置的启动顺序,BIOS 尝试读取 第一个有效磁盘的第一个扇区(MBR) 并将其复制到物理内存地址 0x7C00。
- 检查最后两个字节是否为 0x55AA;如果是,则 MBR签名正确将控制权转移到该代码(跳转到 0x7C00)。
- MBR 代码检查 分区表 寻找 分区标记为活动分区 (起跑旗)
- 找到后,加载 卷引导记录 (VBR) 内存中该分区的访问控制权就交给了它。这就是…… 操作系统启动管理器 (NTLDR、BOOTMGR、GRUB、LILO 等)。
这种链式控制转移称为链式加载:MBR 加载活动分区的引导扇区,而该扇区又加载更大的代码,该代码知道如何启动操作系统或显示包含多个系统的菜单。
MBR 代码的功能极其有限:它必须限制在约 440 个有效字节以内(其余空间用于分区表、签名和可能的标识符),因此它只能执行一些非常具体的任务:在发生错误时显示一条简单的消息、检查四个分区条目、激活 A20 行、使用 BIOS INT 13h 读取磁盘……仅此而已。许多实现会将 MBR 代码从 0x7C00 迁移到另一个地址(例如 0x7A00),以便释放后续引导扇区加载所需的空间。
MBR的技术局限性
尽管 MBR 在过去几十年一直是事实上的标准,但它存在一些如今显而易见的重大局限性:
- 主分区数如您所见,只有 4 个条目。虽然可以通过扩展分区来解决这个问题,但这只是一个简单的权宜之计。
- 尺寸限制MBR 表使用 32 位 LBA 地址来指示起始扇区和每个分区中的扇区总数。这允许最多…… 232 行业 可寻址的。
如果逻辑扇区大小为 512 字节,则最大可寻址面积为:
2 32 × 512 字节 ≈ 2 TiB容量/MBR 磁盘(实际上略少一些,因为一个扇区用于控制)。
当磁盘开始使用4096 字节 (4K)的物理扇区时,MBR 方案的理论极限变为:
2 32 × 4096 字节 ≈ 16 TiB
问题在于,许多高级格式磁盘为了兼容性,在逻辑上模拟 512 字节扇区 ( 512e ),因此大多数系统仍然会达到 2 TiB 的实际容量限制。一些磁盘固件或 USB 适配器允许暴露 4096 字节的逻辑扇区或执行内部转换,但这并不常见,而且可能会导致不兼容。
理论上,使用更大的扇区(例如 65536 字节), MBR 可以达到256 TiB 的容量,但这更多的是一种学术设想。
MBR 与 GPT 及其与 BIOS/UEFI 的关系
为了克服这些局限性,定义了GPT(GUID 分区表),它是 UEFI 规范的一部分。MBR和 GPT的主要区别在于:
- 容量GPT 可以处理数 TB 甚至 EB 的磁盘,而不受 32 位的硬性限制。
- 分区数在 Windows 系统上,GPT 最多允许 128参与者 无需使用扩展分区。理论上,还可以定义更多分区。
- 冗余GPT 维护 分区表的副本 磁盘上的多个位置存储校验和;如果其中一个损坏,可以从另一个重建。
- 兼容性在 GPT 磁盘上 MBR保护 在扇区 0 中,这样只能理解 MBR 的旧工具就不会认为磁盘为空。
在采用UEFI的现代系统中,固件不再通过盲目读取 MBR 并执行其代码来启动。相反,它能够识别 GPT 分区表,并可以读取位于称为EFI 系统分区 (ESP)的特殊分区中的 FAT 等文件系统。然后,它会从该分区加载 EFI 可执行文件(例如,Windows 中的 BOOTMGFW.EFI或Linux 中的grubx64.efi)。传统的 MBR 不再是主要的启动组件,尽管为了兼容性,它可能仍然存在。
MBR、启动管理器和 GRUB:谁说了算?
在 BIOS+MBR 环境中,MBR 通常包含一个最小加载程序,该加载程序:
- 找到活动分区。
- 它加载其引导扇区(VBR)。
- 该 VBR 加载完整的操作系统启动管理器代码。
更高级的引导管理器,例如GRUB,通常会用自己的代码替换标准的 MBR 代码,这些代码能够实现以下功能:
- 显示一个 具有多个操作系统的菜单.
- 加载位于磁盘“空”磁道或文件中的其他部分。
- 链式装载。
因此,当您在已安装过 Windows 的 MBR 磁盘上以 BIOS 模式安装 Linux 时,安装程序通常会写入自己的 MBR 代码。这个新的 MBR 不会直接跳转到 Windows 分区的 VBR,而是加载 GRUB 内核,GRUB 内核会显示一个菜单,您可以从中选择启动 Linux 或链接 Windows 引导加载程序。
在UEFI中,情况有所不同:固件直接从ESP分区加载EFI文件,GRUB也作为另一个EFI二进制文件安装在那里。 “替换MBR”的概念变得不再那么重要,因为启动过程不再仅仅依赖于那512字节的扇区。
MBR、Windows、Linux 和双启动
在同一台电脑上混合使用Windows 和 Linux 系统时,会涉及到以下几个因素:
- 如果固件在 传统BIOS模式 或在 UEFI 模式下。
- 如果磁盘已分区,则 MBR 或 GPT.
- 它安装在哪里? 主启动管理器 (MBR、ESP、另一个光盘……)
例如,在已安装 Windows 的 UEFI 和 GPT 磁盘的 PC 上,典型的现代 Linux 发行版安装过程会创建或利用现有的 ESP 分区,并添加其自身的 EFI 二进制文件(GRUB)。然后,它会注册一个名为“Ubuntu”、“Manjaro”等的 UEFI 启动项。固件会同时显示这两个启动项:Windows 启动管理器启动项和GRUB启动项。GRUB 反过来可能会在其菜单中提供链式加载 Windows 的选项。
然而,在采用 BIOS+MBR 的系统上,发行版通常会将 GRUB 安装在第一块磁盘的 MBR 中。安装程序会检测到 Windows,并在 GRUB 菜单中添加一个条目,之后每次启动计算机时,控制权都会通过 GRUB 传递。如果您删除了 Linux,并且 MBR 指向的 GRUB 已不存在,那么在用 Microsoft 工具修复 MBR之前,您将无法启动进入 Windows 。
在 Linux 系统中备份、恢复和擦除 MBR
在 UNIX 和 GNU/Linux 系统中,通常使用`dd`命令直接从控制台操作 MBR。一些典型示例如下:
备份主数据库
仅保存第一个扇区(经典 MBR):
dd if=/dev/xxx of=mbr.backup bs=512 count=1
其中/dev/xxx将是设备(sda、nvme0n1 等)。
为了保险起见,如果您还想存储前 63 个扇区(以防存在 GPT 数据或额外的引导代码):
dd if=/dev/xxx of=mbr_63.backup bs=512 count=63
恢复主数据库
如果您需要从备份中恢复之前的 MBR :
dd if=mbr.backup of=/dev/xxx bs=512 count=1
通过将扇区设置为零来删除 MBR。
要彻底删除 MBR 信息(注意:这将导致磁盘上没有可识别的分区表):
dd if=/dev/zero of=/dev/xxx bs=512 count=1
擦除之后,磁盘将显示为“原始”状态,需要重新分区(使用 MBR 或 GPT 分区表)并重新创建所有内容。
在 Windows 中修复或重写 MBR
在较早的 Windows 系统(DOS、Windows 9x)中,fdisk /mbr工具会在不影响分区表的情况下重写 MBR 代码。虽然相关文档不多,但它可以快速修复许多启动病毒。
在Windows 2000 及更高版本中,从恢复控制台或现代安装环境中,可以使用以下命令运行bootrec实用程序:
bootrec /FixMbrbootrec /FixBootbootrec /ScanOsbootrec /RebuildBcd
这组命令通常足以将 Windows 引导加载程序恢复到 MBR 或 ESP 分区,具体取决于您是从 BIOS 还是 UEFI 启动。/FixMbr命令会写入一个新的、通用的、与 Windows 兼容的 MBR 代码,而不会更改分区。
在某些版本(例如 Vista 或某些版本的 10/11)中,您可能会遇到“访问被拒绝”错误。 bootrec /FixBoot这需要额外的步骤(例如,为 EFI 分区分配盘符、使用 bcdboot 等),但总体思路是一样的: 重新安装 Windows 启动管理器 替换 MBR 或 EFI 启动中可能存在的 GRUB 代码。
在 Windows 中检查、转换和管理 MBR/GPT
如果您不确定磁盘格式是 MBR 还是 GPT,可以使用磁盘管理进行检查:
- 右键单击“开始”按钮 → 迪斯科舞厅.
- 右键单击“磁盘 0”→ 物业.
- 标签页 卷数在那里您可以看到该样式是主引导记录 (MBR) 还是 GUID 分区表 (GPT)。
您也可以使用diskpart或 PowerShell在 MBR 和 GPT 之间进行转换,但需要注意一个非常重要的事项:标准转换需要一个空磁盘。这意味着您必须事先删除所有分区,或者使用承诺无损转换的特定工具。
使用 diskpart 进行转换
在管理员控制台中:
diskpartlist disk(写下记录编号)select disk <número>clean(删除所有分区)- 将 MBR 转换为 GPT:
convert gpt - 将 GPT 转换为 MBR:
convert mbr
完成后,磁盘将按照选定的方案进行初始化,您可以再次创建分区。
使用 PowerShell 进行转换
在具有管理员权限的 PowerShell中:
- 列出专辑:
Get-Disk - 清理要转换的磁盘上的分区:
Clear-Disk -Number <DiskNumber> -RemoveData -Confirm:$false - 初始化为 GPT:
Initialize-Disk -Number <DiskNumber> -PartitionStyle GPT - 或者初始化为 MBR:
Initialize-Disk -Number <DiskNumber> -PartitionStyle MBR - 使用以下命令检查结果
Get-Disk并查看分区样式列。
SSD 和现代硬盘应该使用 MBR 还是 GPT?
初始化新固态硬盘时,一个老生常谈的问题是选择MBR 还是 GPT 分区表。以下是一些相当合理的经验法则:
- 如果专辑超过 2 TBGPT 几乎是必需的,因为 MBR 无法满足需求。
- 如果你的团队使用 UEFI 和 Windows 8 或更高版本GPT 更合适,并且允许您利用安全启动、恢复等高级功能。
- 如果你继续 Windows 7或更早版本或者,对于没有 UEFI 的非常老旧的 BIOS,为了避免启动不兼容,选择 MBR 更安全。
就 SSD 的纯粹性能而言,使用 MBR 或 GPT并不会改变读写速度;改变的是兼容性、分区管理的便捷性以及启动选项。
损坏的MBR的典型症状和有用命令
当MBR代码或表损坏时,很容易遇到如下消息:
- “无效分区表错误”.
- “无效的启动磁盘” 或“无可启动设备”。
- 未找到 RAID 消息或卷。
其他一些更明显的物理症状,如金属噪音或响亮的磁盘咔嗒声,更多地指向硬件故障而不是逻辑 MBR 问题,尽管有时两者兼而有之。
在 Linux 系统中,创建和管理 MBR 或 GPT 磁盘上的分区通常需要使用fdisk、cfdisk或parted等工具。在考试题中经常出现的各种选项(fdisk、gdisk、parted、cfdisk 等)中,用于对 MBR 和 GPT 磁盘进行分区的通用工具实际上是parted。
关于分区数量,MBR 方案至少可以处理一个分区(如果磁盘正在使用),并且由于扩展分区,逻辑上可以处理四个以上的分区,尽管物理上该表只显示四个主条目。
了解 MBR 的工作原理、其大小和分区限制、它与 BIOS、UEFI 和 GPT 的关系,以及它如何与 GRUB 和 Windows 引导加载程序等管理器交互,可以让你更好地控制双重安装、磁盘迁移、MBR↔GPT 转换,最重要的是,可以恢复“突然”停止启动的计算机,而无需随意格式化。

