0
点赞
收藏
分享

微信扫一扫

MBR分区表简介

三次方 2023-04-18 阅读 98

一、主引导扇区的组成

一般而言,磁道0中的第1个扇区(扇区编号是从1开始的?见参考内容(3))是主引导扇区,在PC上BIOS会读取该扇区,并将控制权转交给这个扇区上的MBR(很多教材中以MBR指代主引导扇区,需要根据上下文区分)。

主引导扇区由三个部分组成:

主引导记录(MBR,Master Boot Record)

硬盘分区表(DPT,Disk Partition Table)

引导记录标志(或者说结束标志)(BRID,Boot Record ID)

主引导扇区大小是512字节,其中MBR占据446个字节,DPT占据64字节,BRID占据两个字节。

部分

位置(hex)

大小(bytes)

描述

MBR部分

000~161

354bytes

MBR代码区域

162~1BD

92bytes

MBR数据区域

DPT部分

1BE~1CD

16bytes

分区表1

1CE~1DD

16bytes

分区表2

1DE~1ED

16bytes

分区表3

1EE~1FD

16bytes

分区表4

BRID部分

1FE~1FF

2bytes

结束标志,必须是55AA

二、获取主引导扇区数据

dd if=/dev/nvme0n1 of=mbr count=1     # bs默认值为512,不用配置
hexdump -C mbr
00000000  eb 63 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.c..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|
00000080  00 20 fb a0 64 7c 3c ff  74 02 88 c2 52 be 05 7c  |. ..d|<.t...R..||
00000090  b4 41 bb aa 55 cd 13 5a  52 72 3d 81 fb 55 aa 75  |.A..U..ZRr=..U.u|
000000a0  37 83 e1 01 74 32 31 c0  89 44 04 40 88 44 ff 89  |7...t21..D.@.D..|
000000b0  44 02 c7 04 10 00 66 8b  1e 5c 7c 66 89 5c 08 66  |D.....f..\|f.\.f|
000000c0  8b 1e 60 7c 66 89 5c 0c  c7 44 06 00 70 b4 42 cd  |..`|f.\..D..p.B.|
000000d0  13 72 05 bb 00 70 eb 76  b4 08 cd 13 73 0d 5a 84  |.r...p.v....s.Z.|
000000e0  d2 0f 83 de 00 be 85 7d  e9 82 00 66 0f b6 c6 88  |.......}...f....|
000000f0  64 ff 40 66 89 44 04 0f  b6 d1 c1 e2 02 88 e8 88  |d.@f.D..........|
00000100  f4 40 89 44 08 0f b6 c2  c0 e8 02 66 89 04 66 a1  |.@.D.......f..f.|
00000110  60 7c 66 09 c0 75 4e 66  a1 5c 7c 66 31 d2 66 f7  |`|f..uNf.\|f1.f.|
00000120  34 88 d1 31 d2 66 f7 74  04 3b 44 08 7d 37 fe c1  |4..1.f.t.;D.}7..|
00000130  88 c5 30 c0 c1 e8 02 08  c1 88 d0 5a 88 c6 bb 00  |..0........Z....|
00000140  70 8e c3 31 db b8 01 02  cd 13 72 1e 8c c3 60 1e  |p..1......r...`.|
00000150  b9 00 01 8e db 31 f6 bf  00 80 8e c6 fc f3 a5 1f  |.....1..........|
00000160  61 ff 26 5a 7c be 80 7d  eb 03 be 8f 7d e8 34 00  |a.&Z|..}....}.4.|
00000170  be 94 7d e8 2e 00 cd 18  eb fe 47 52 55 42 20 00  |..}.......GRUB .|
00000180  47 65 6f 6d 00 48 61 72  64 20 44 69 73 6b 00 52  |Geom.Hard Disk.R|
00000190  65 61 64 00 20 45 72 72  6f 72 0d 0a 00 bb 01 00  |ead. Error......|
000001a0  b4 0e cd 10 ac 3c 00 75  f4 c3 00 00 00 00 00 00  |.....<.u........|
000001b0  00 00 00 00 00 00 00 00  4e cb 93 28 00 00 80 04  |........N..(....|
000001c0  01 04 83 fe c2 ff 00 08  00 00 00 00 20 00 00 fe  |............ ...|
000001d0  c2 ff 8e fe c2 ff 00 08  20 00 00 f8 5f 0c 00 00  |........ ..._...|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

第一列为偏移量16进制,白话就是文件从哪个大小开始输出

0000200转化为10进制为512,代表512字节

0xaa55了这就是Boot Sector结束标志。

MBR分区表简介_mbr

三、硬盘分区表的简介

1、16字节含义

硬盘分区表由4个分区的信息组成,每个分区用16字节描述,共4*16=64字节。

每个分区的16字节表示的含义如下: 

字节编号

描述

第1字节

表示分区状态,80H表示活动分区,00H表示非活动分区

第2、3、4字节

表示本分区的起始磁头号、扇区号、柱面号,其中:

        磁头号——第2字节;

        扇区号——第3字节的低6位;

        柱面号——为第3字节高2位+第4字节8位。

第5字节

表示文件系统类型,其中:

        00H——该分区没有指定;

        06H——FAT16基本分区;

        0BH——FAT32基本分区;

        05H——扩展分区;

        07H——NTFS分区;

        0FH——(LBA模式)扩展分区;

        83H——Linux分区。

第6、7、8字节

表示本分区的结束磁头号、扇区号、柱面号,其中:

        磁头号——第6字节;

        扇区号——第7字节的低6位;

        柱面号——第7字节的高2位+第8字节8位。

第9、10、11、12字节

本分区的逻辑起始扇区号 ,或者说本分区之前已用的扇区数,或者说本分区起始逻辑扇区号与逻辑0扇区号之差

第13、14、15、16字节

本分区总的扇区数。由此可以看出,总的扇区数用4个字节表示,所以最多有2的32次方个扇区,每个扇区512字节,则每个分区最大是2TB。

注:GPT的分区表是32个扇区,每个扇区512字节,共计16KB

2、示例

“80 04 01 04 83 fe c2 ff 00 08 00 00 00 00 20 00”这个是我硬盘的第一个分区

80,表示这个分区是活动分区,系统会从这个分区启动。

04 01 04 ,其中16进制(04)转化为2进制(0000 0100)转化为10进制(4),其中16进制(01)转化为2进制(0000 0001)转化为10进制(1),其中16进制(04)转化为2进制(0000 0100)转化为10进制(4),表示这个分区的起始扇区是(磁头4,柱面4,扇区1)。

83,表示Linux分区

fe c2 ff,其中(Fe)=(11111110) =(254),(C2)=(11000010)=(194),(FF)=(11111111)=(255),表示这个分区的结束扇区是(磁头254,柱面1023,扇区2)。

00 08 00 00,反向是00 00 08 00,转为十进制是2048,表示该分区前面已经有2048个扇区。

00 00 20 00,反向是00 20 00 00,转为十进制是2097152,表示该分区共有2097152个扇区,即(磁头4,柱面4,扇区1)至((磁头254,柱面1023,扇区2)共有2097152个扇区。

大小计算:2097152*512/1024/1024/1024=1G




举报

相关推荐

0 条评论