MBR
MBR组成
MBR(Master Boot Record): 主引导扇区
MBR处于硬盘的第一个扇区,总共512个字节,前446字节(00H~1BDH)是引导程序,后64字节(1BEH~1FDH)为DPT(Disk Partition Table)硬盘分区表,最后的两个字节(1FEH~1FFH)”55 AA”是分区有效结束标志。
0000H - 0088H | 主引导程序 | 负责从活动分区中装载,并运行系统引导程序 |
0089H - 00E1H | 出错信息数据区 | 数据区 |
00E2H - 01BDH | 全为0字节 | 数据区 |
01BEH - 01CDH | 分区项1(16字节) | 分区表 |
01CEH - 01DDH | 分区项2(16字节) | 分区表 |
01DEH - 01EDH | 分区项3(16字节) | 分区表 |
01EEH - 01FDH | 分区项4(16字节) | 分区表 |
01FEH | 55 | |
01FEH | AA |
MBR引导程序段的主要功能是:
1\ 检查硬盘分区表是否完好
2\ 在分区表中寻找可引导的活动分区
3\ 将活动分区的第一逻辑扇区内容装入内存,在DOS分区中,此扇区内容称为DOS引导记录(DBR)
分区项中16字节定义
硬盘分区规则:一个分区的所有扇区必须连续,硬盘最多可以有物理上的4个分区,由于扩展分区只能有一个,所以这4个分区可以是4个主分区或者3个主分区加一个扩展分区。而且扩展分区不能直接使用,还要将其划分为逻辑分区才行。
分区原理
只有主分区
MBR的分区表最多记录四个主分区的信息。
3个主分区+1个扩展分区
主分区表64bytes,最多只能有四个主分区,如果要多于四个分区,就要拿出一个主分区作为扩展分区,扩展分区记录了扩展分区表的位置,在扩展分区表里是逻辑分区的信息。
fdisk
先建立3个主分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-243200, default 1): (#enter) Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-243200, default 243200): +100M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (3054-243200, default 3054): (#enter) Using default value 3054
Last cylinder or +size or +sizeM or +sizeK (3054-243200, default 243200): +100M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (6107-243200, default 6107): (#enter) Using default value 6107
Last cylinder or +size or +sizeM or +sizeK (6107-243200, default 243200): +100M
Command (m for help): p
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 1 3053 97688 83 Linux
/dev/mmcblk0p2 3054 6106 97696 83 Linux
/dev/mmcblk0p3 6107 9159 97696 83 Linux
在建立一个扩展分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Selected partition 4
First cylinder (9160-243200, default 9160): (#enter) Using default value 9160
Last cylinder or +size or +sizeM or +sizeK (9160-243200, default 243200): (#enter) Using default value 243200
Command (m for help): p
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 1 3053 97688 83 Linux
/dev/mmcblk0p2 3054 6106 97696 83 Linux
/dev/mmcblk0p3 6107 9159 97696 83 Linux
/dev/mmcblk0p4 9160 243200 7489312 5 Extended
然后就可以在扩展分区里面建立多个逻辑分区
Command (m for help): n
First cylinder (9160-243200, default 9160): Using default value 9160
Last cylinder or +size or +sizeM or +sizeK (9160-243200, default 243200): +200M
Command (m for help): n
First cylinder (15265-243200, default 15265): Using default value 15265
Last cylinder or +size or +sizeM or +sizeK (15265-243200, default 243200): +200M
Command (m for help): p
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 1 3053 97688 83 Linux
/dev/mmcblk0p2 3054 6106 97696 83 Linux
/dev/mmcblk0p3 6107 9159 97696 83 Linux
/dev/mmcblk0p4 9160 243200 7489312 5 Extended
/dev/mmcblk0p5 9160 15264 195352 83 Linux
/dev/mmcblk0p6 15265 21369 195352 83 Linux