一、主引导扇区的组成
一般而言,磁道0中的第1个扇区是主引导扇区,在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 |[email protected]..|
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 |[email protected]..........|
00000100 f4 40 89 44 08 0f b6 c2 c0 e8 02 66 89 04 66 a1 |[email protected].|
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结束标志。
三、硬盘分区表的简介
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