2023年11月25日发(作者:)

MBR分区表详解

主引导记录

主引导记录(Master Boot Record,缩写:MBR),⼜叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的⾸个扇

区,它在硬盘上的三维地址为(柱⾯,磁头,扇区)=(001)。在深⼊讨论主引导扇区内部结构的时候,有时也将其开

头的446字节内容特指为主引导记录MBR),其后是416字节的磁盘分区表DPT),以及2字节的结束标志

55AA)。因此,在使⽤主引导记录MBR)这个术语的时候,需要根据具体情况判断其到底是指整个主引导扇区,还是

主引导扇区的前446字节。

主引导扇区记录着硬盘本⾝的相关信息以及硬盘各个分区的⼤⼩及位置信息,是数据信息的重要⼊⼝。如果它受到破坏,硬盘

上的基本数据结构信息将会丢失,需要⽤繁琐的⽅式试探性的重建数据结构信息后才可能重新访问原先的数据。主引导扇

区内的信息可以通过任何⼀种基于某种操作系统的分区⼯具软件写⼊,但和某种操作系统没有特定的关系,即只要创建了有效

的主引导记录就可以引导任意⼀种操作系统(操作系统是创建在⾼级格式化的硬盘分区之上,是和⼀定的⽂件系统相联系

的)。

对于硬盘⽽⾔,⼀个扇区可能的字节数为128×2nn=0,1,2,3)。⼤多情况下,取n=2,即⼀个扇区(sector)的⼤⼩为512

节。

⽬录

主引导记录 (1)

主引导记录的组成 (2)

启动代码 (2)

硬盘分区表 (2)

结束标志字 (3)

主引导扇区的读取流程 (4)

主引导记录与硬盘分区 (4)

MBR分区表与GPT分区表的关系 (5)

注释 (5)

主引导记录的组成

启动代码

主引导记录最开头是第⼀阶段引导代码。其中的硬盘引导程序的主要作⽤是检查分区表是否正确并且在系统硬件完成⾃检以后

将控制权交给硬盘上的引导程序(如GNU GRUB)。它不依赖任何操作系统,⽽且启动代码也是可以改变的,从⽽能够实现

多系统引导。

硬盘分区表

硬盘分区表占据主引导扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进⾏描述,其中每个分区的信

息占据16个字节。具体每个字节的定义可以参见硬盘分区结构信息。下⾯是⼀个例⼦:

如果某⼀分区在硬盘分区表的信息如下

80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

则我们可以看到,最前⾯的"80"是⼀个分区的激活标志,表⽰系统可引导[1]

"01 01 00"表⽰分区开始的磁头号为1,开始的扇区号为1,开始的柱⾯号为0"0B"表⽰分区的系统类型是FAT32,其他⽐较

常⽤的有04FAT16)、07NTFS);"FE BF FC"表⽰分区结束的磁头号为254,分区结束的扇区号为

63、分区结束的柱⾯号为764"3F 00 00 00"表⽰⾸扇区的相对扇区号为63

(⼩端序);"7E 86 BB 00"表⽰总扇区数为12289662(⼩端序)。

对于⼤于8.4G的现代硬盘,CHS已经⽆法表⽰, BIOS使⽤LBA模式,对于超出的部分,CHS值通常设为0xFEFFFF,并加以

忽略,直接使⽤Offset 0x08-0x0c4字节相对值,再进⾏内部转换。

结束标志字

结束标志字55AA(偏移1FEH-偏移1FFH)最后两个字节,是检验主引导记录是否有效的标志。

主引导扇区的读取流程

系统开机或者重启。

1. BIOS加电(台湾⽤语:引导)⾃检(Power On Self Test --

POST)。BIOS执⾏内存地址为FFFF:0000H处的跳转指令,跳转到

固化在ROM中的⾃检程序处,对系统硬件(包括内存)进⾏检查。

2. 读取主引导记录(MBR)。当BIOS检查到硬件正常并与CMOS中的

设置相符后,按照CMOS中对启动设备的设置顺序检测可⽤的启动设

备。BIOS将相应启动设备的第⼀个扇区(也就是MBR扇区)读⼊内

存地址为0000:7C00H处。

3. 检查0000:7DFEH-0000:7DFFHMBR的结束标志位)是否等于

55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满⾜

要求则显⽰"NO ROM BASIC"然后死机。

4. 当检测到有启动设备满⾜要求后,BIOS将控制权交给相应启动设备。

启动设备的MBR将⾃⼰复制到0000:0600H处,然后继续执⾏。

5. 根据MBR中的引导代码启动引导程序。

事实上,BIOS不仅检查0000:7DFEH-0000:7DFFHMBR的结束标志位)是否等于55AAH,往往还对磁盘是否有写保护、

主引导扇区中是否存在活动分区等进⾏检查。如果发现磁盘有写保护,则显⽰磁盘写保护出错信息;如果发现磁盘中不存在活

动分区,则显⽰类似如下的信息“Remove disk or other media Press any key to restart”

主引导记录与硬盘分区

从主引导记录的结构可以知道,它仅仅包含⼀个64个字节的硬盘分区表。由于每个分区信息需要16个字节,所以对于采⽤

MBR型分区结构的硬盘,最多只能识别4个主要分区(Primary partition)。所以对于⼀个采⽤此种分区结构的硬盘来说,想

要得到4个以上的主要分区是不可能的。这⾥就需要引出扩展分区了。扩展分区也是主要分区的⼀种,但它与主分区的不同在

于理论上可以划分为⽆数个逻辑分区。[2]

扩展分区中逻辑驱动器的引导记录是链式的。每⼀个逻辑分区都有⼀个和MBR结构类似的扩展引导记录(EBR),其分区表

的第⼀项指向该逻辑分区本⾝的引导扇区,第⼆项指向下⼀个逻辑驱动器的EBR,分区表第三、第四项没有⽤到。

Windows系统默认情况下,⼀般都是只划分⼀个主分区给系统,剩余的部分全部划⼊扩展分区。这⾥有下⾯⼏点需要注意:

MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有⼀个,然后可以再细分为多个逻辑

分区。

Linux系统中,硬盘分区命名为sda1sda4或者hda1hda4(其中a 表⽰硬盘编号可能是abc等等)。在MBR硬盘

中,分区号14是主分区(或者扩展分区),逻辑分区号只能从5开始。

MBR分区表中,⼀个分区最⼤的容量为2T,且每个分区的起始柱⾯必须在这个disk的前2T内。你有⼀个3T的硬盘,根据

要求你⾄少要把它划分为2个分区,且最后⼀个分区的起始扇区要位于硬盘的前2T空间内。[3]如果硬盘太⼤则必须改⽤GPT

MBR分区表与GPT分区表的关系

与⽀持最⼤卷为2 TBTerabyte s)并且每个磁盘最多有4个主分区(或3个主分区,1个扩展分区和⽆限制的逻辑驱动器)的

MBR磁盘分区的样式相⽐,GPT磁盘分区样式⽀持最⼤为128个分割,⼀个分割最⼤18 EB Exabyte s),只受到操作系统

限制(由于分区表本⾝需要占⽤⼀定空间,最初规划硬盘分区时,留给分区表的空间决定了最多可以有多少个分区,IA-64

Windows限制最多有128个分区,这也是EFI标准规定的分区表的最⼩尺⼨)。与MBR分区的磁盘不同,⾄关重要的平台操作

数据位于分区,⽽不是位于⾮分区或隐藏扇区。另外,GPT分区磁盘有备份分区表来提⾼分区数据结构的完整性。在UEFI

统上,通常是通过ESP分区中的EFI应⽤程序⽂件引导GPT硬盘上的操作系统,⽽不是活动主分区上的引导程序。

注释

1. ^对于⼀个操作系统⽽⾔,系统分区设为活动分区并不是必须的,这主要视引导

程序⽽定,如果使⽤的引导程序是Grub4DosMBR中的引导代码仅仅按照分区

的顺序依次探测第⼆阶段引导器grldr的位置,并运⾏第⼀个探测到的grldr

件。

2. ^⼀个硬盘的分区个数还要受到分区⼤⼩的限制,因为硬盘是按照柱⾯分区的:

⼀个分区⾄少要占⼀个柱⾯。但有⼀点需要注意,由于现在的硬盘结构已经和⽼

式硬盘有了很⼤区别,其寻址结构也不再是CHS寻址,所以这⾥的柱⾯⼤⼩不同于相关软件显⽰的柱⾯⼤⼩。对于物理结构

上有n个⾯的硬盘,其分区空间的最

⼩值为:n ×扇区/磁道× 512字节。

3. ^根据16字节分区表的结构:当前分区的扇区数⽤4个字节表⽰,前⾯各分区扇

区数的总和也是4个字节,⽽232×512 2 199 023 255 552 Byte