MBR是什么

主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,位于硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。

在BIOS完成加电自检后,将该扇区内容加载到内存中执行。

MBR组成

| 开始地址 | 结束地址 | 作用 | 字节数 |
|————+————+————————————+——–|
| 0x000(0) | 0x1bd(445) | MBR,bootloader第一阶段代码 | 446 |
| 0x1be(446) | 0x1fd(509) | DPT,记录磁盘分区信息 | 64 |
| 0x1fe(510) | 0x1ff(511) | MAGIC(0x55,0xAA),分区是否有效标志 | 2 |

DPT成员

  • 用来记录分区相关信息

  • DPT表项占用16B,所以最多4个成员,意味着最多4个主分区!

Note:

  • 分区最小颗粒为1柱面

硬盘分区结构信息:

| 偏移 | 长度(字节) | 意义 |
|——+————+——————————————————————————————————–|
| 00H | 1 | 分区状态:00–>非活动分区;80–> 活动分区,其它数值没有意义 |
| 01H | 1 | 分区起始磁头号(HEAD),用到全部8位 |
| 02H | 2 | 分区起始扇区号(SECTOR),占据02H的位0-5; 该分区的起始磁柱号(CYLINDER),占据 02H的位6-7和03H的全部8位 |
| 04H | 1 | 文件系统标志位 |
| 05H | 1 | 分区结束磁头号(HEAD),用到全部8位 |
| 06H | 2 | 分区结束扇区号(SECTOR),占据06H的位0-5; 该分区的终止磁柱号(CYLINDER),占据 06H的位6-7和07H的全部8位 |
| 08H | 4 | 分区起始逻辑扇区号,低位字节在前(小端模式),如0x41394006,实际为0x06403941 |
| 0CH | 4 | 分区总的扇区数 |

实例分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
0000000: eb 63 90 8e d8 8e d0 bc 00 7c 89 e6 06 57 8e c0
0000010: fb fc bf 00 06 b9 00 01 f3 a5 ea 1f 06 00 00 52
0000020: 52 b4 41 bb aa 55 31 c9 30 f6 f9 cd 13 72 13 81
0000030: fb 55 aa 75 0d d1 e9 73 09 66 c7 06 8d 06 b4 42
0000040: eb 15 5a b4 08 cd 13 83 e1 3f 51 0f b6 c6 40 f7
0000050: e1 52 50 66 31 c0 66 99 e8 66 00 80 01 00 00 00
0000060: 00 00 00 00 ff fa 90 90 f6 c2 80 74 05 f6 c2 70
0000070: 74 02 b2 80 ea 79 7c 00 00 31 c0 8e d8 8e d0 bc
0000080: 00 20 fb a0 64 7c 3c ff 74 02 88 c2 52 bb 17 04
0000090: 80 27 03 74 06 be 88 7d e8 17 01 be 05 7c b4 41
00000a0: bb aa 55 cd 13 5a 52 72 3d 81 fb 55 aa 75 37 83
00000b0: e1 01 74 32 31 c0 89 44 04 40 88 44 ff 89 44 02
00000c0: c7 04 10 00 66 8b 1e 5c 7c 66 89 5c 08 66 8b 1e
00000d0: 60 7c 66 89 5c 0c c7 44 06 00 70 b4 42 cd 13 72
00000e0: 05 bb 00 70 eb 76 b4 08 cd 13 73 0d f6 c2 80 0f
00000f0: 84 d0 00 be 93 7d e9 82 00 66 0f b6 c6 88 64 ff
0000100: 40 66 89 44 04 0f b6 d1 c1 e2 02 88 e8 88 f4 40
0000110: 89 44 08 0f b6 c2 c0 e8 02 66 89 04 66 a1 60 7c
0000120: 66 09 c0 75 4e 66 a1 5c 7c 66 31 d2 66 f7 34 88
0000130: d1 31 d2 66 f7 74 04 3b 44 08 7d 37 fe c1 88 c5
0000140: 30 c0 c1 e8 02 08 c1 88 d0 5a 88 c6 bb 00 70 8e
0000150: c3 31 db b8 01 02 cd 13 72 1e 8c c3 60 1e b9 00
0000160: 01 8e db 31 f6 bf 00 80 8e c6 fc f3 a5 1f 61 ff
0000170: 26 5a 7c be 8e 7d eb 03 be 9d 7d e8 34 00 be a2
0000180: 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 47 65
0000190: 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 65 61
00001a0: 64 00 20 45 72 72 6f 72 0d 0a 00 bb 01 00 b4 0e
00001b0: cd 10 ac 3c 00 75 f4 c3 15 49 e4 03 00 00 80 01
00001c0: 01 00 07 fe ff ff 3f 00 00 00 41 39 40 06 00 fe
00001d0: ff ff 0f fe ff ff fe 3f 40 06 cc 08 f8 33 00 00
00001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa

分区1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                                                   00 01
00001b0: 80 01
02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00001c0: 01 00 07 fe ff ff 3f 00 00 00 41 39 40 06

0x1be
00H 1 80->活动分区
01H 1 分区起始磁头号,1
02H 2 分区起始扇区号,占用02H的低6位,1
分区起始柱面号,占用02H的高2位和03H的8位,0
04H 1 文件系统标志位,NTFS(07H)
05H 1 分区结束磁头号,ff(254)
06H 2 分区结束扇区号,占用06H的低6位,63
分区结束柱面号,占用06H的高2位和07H的8位,113f(1477)
08H 4 分区起始逻辑扇区号,0000003f(63)
0cH 4 分区总扇区数,06403941(104872257)

使用fdisk查看DPT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x03e44915

Device Boot Start End Blocks Id System
/dev/sda1 * 63 104872319 52436128+ 7 HPFS/NTFS/exFAT
/dev/sda2 104873982 976767177 435946598 f W95 Ext'd (LBA)
/dev/sda5 104873984 207273983 51200000 7 HPFS/NTFS/exFAT
/dev/sda6 207276032 317071359 54897664 83 Linux
/dev/sda7 * 317073408 317464575 195584 83 Linux
/dev/sda8 317466624 321370111 1951744 82 Linux swap / Solaris
/dev/sda9 321372160 341852159 10240000 83 Linux
/dev/sda10 * 341854208 362334207 10240000 83 Linux
/dev/sda11 362334271 419473214 28569472 83 Linux
/dev/sda12 419473278 976767177 278646950 7 HPFS/NTFS/exFAT

参考

  1. 维基-加电自检
  2. 维基-MBR

留言