Bootstrap

如何查看linux中的MBR记录

大家是不是经常会谈论到MBR(main boot record)。MBR是由bootloader、dpt、结尾标志组成的。简单的来说MBR=bootloader+dpt+结尾标志(55 aa)。其中bootloader即引导记录(446字节),dpt磁盘分区表(64字节)

结尾标志(2字节)。那我们怎么看这里面的内容呢,哈哈。linux有很方便的方法。请大家接着往下看:

 

1、[root@centos5 ~]# dd if=/dev/sda of=mbr.bin bs=1 count=512
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.001414 seconds, 362 kB/s

(这里面主要是用到了dd这个工具,dd这个工具很强大。大家可以看下它的用法。)

 

2、[root@centos5 ~]# hexdump -C mbr.bin
00000000 eb 48 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |.H..............|
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 03 02 |.........|...t..|
00000040 80 00 00 80 b7 4c 02 00 00 08 fa 90 90 f6 c2 80 |.....L..........|
00000050 75 02 b2 80 ea 59 7c 00 00 31 c0 8e d8 8e d0 bc |u....Y|..1......|
00000060 00 20 fb a0 40 7c 3c ff 74 02 88 c2 52 be 7f 7d |. ..@|<.t...R..}|
00000070 e8 34 01 f6 c2 80 74 54 b4 41 bb aa 55 cd 13 5a |.4....tT.A..U..Z|
00000080 52 72 49 81 fb 55 aa 75 43 a0 41 7c 84 c0 75 05 |RrI..U.uC.A|..u.|
00000090 83 e1 01 74 37 66 8b 4c 10 be 05 7c c6 44 ff 01 |...t7f.L...|.D..|
000000a0 66 8b 1e 44 7c c7 04 10 00 c7 44 02 01 00 66 89 |f..D|.....D...f.|
000000b0 5c 08 c7 44 06 00 70 66 31 c0 89 44 04 66 89 44 |\..D..pf1..D.f.D|
000000c0 0c b4 42 cd 13 72 05 bb 00 70 eb 7d b4 08 cd 13 |..B..r...p.}....|
000000d0 73 0a f6 c2 80 0f 84 ea 00 e9 8d 00 be 05 7c c6 |s.............|.|
000000e0 44 ff 00 66 31 c0 88 f0 40 66 89 44 04 31 d2 88 |[email protected]..|
000000f0 ca c1 e2 02 88 e8 88 f4 40 89 44 08 31 c0 88 d0 |[email protected]...|
00000100 c0 e8 02 66 89 04 66 a1 44 7c 66 31 d2 66 f7 34 |...f..f.D|f1.f.4|
00000110 88 54 0a 66 31 d2 66 f7 74 04 88 54 0b 89 44 0c |.T.f1.f.t..T..D.|
00000120 3b 44 08 7d 3c 8a 54 0d c0 e2 06 8a 4c 0a fe c1 |;D.}<.T.....L...|
00000130 08 d1 8a 6c 0c 5a 8a 74 0b bb 00 70 8e c3 31 db |...l.Z.t...p..1.|
00000140 b8 01 02 cd 13 72 2a 8c c3 8e 06 48 7c 60 1e b9 |.....r*....H|`..|
00000150 00 01 8e db 31 f6 31 ff fc f3 a5 1f 61 ff 26 42 |....1.1.....a.&B|
00000160 7c be 85 7d e8 40 00 eb 0e be 8a 7d e8 38 00 eb ||..}.@.....}.8..|
00000170 06 be 94 7d e8 30 00 be 99 7d e8 2a 00 eb fe 47 |...}.0...}.*...G|
00000180 52 55 42 20 00 47 65 6f 6d 00 48 61 72 64 20 44 |RUB .Geom.Hard D|
00000190 69 73 6b 00 52 65 61 64 00 20 45 72 72 6f 72 00 |isk.Read. Error.|
000001a0 bb 01 00 b4 0e cd 10 ac 3c 00 75 f4 c3 00 00 00 |........<.u.....|
000001b0 00 00 00 00 00 00 00 00 9b 6f 01 00 00 00 80 01 |.........o......|
000001c0 01 00 83 fe 3f 0c 3f 00 00 00 8e 2f 03 00 00 00 |....?.?..../....|
000001d0 01 0d 8e fe ff ff cd 2f 03 00 e5 9b 7c 02 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

看到没,55 aa就是结束标志。

看出一些门道来了:
1、第一列数字逢8进位,故为8进制,8列亦印证,0o1000=0d512 Byte,512B为一个扇区的大小。
2、看到0xaa55了吗?这就是Boot Sector结束标志。

至此提一提另外一种说法:MBR
Main(Mater)Boot Record主引导记录,实际上只是Boot Sector的一部分,Boot Sector:
a、MBR,占头446B
b、DPT,Disk Partion Table主分区表,4个主分区信息,每个16B
c、Boot Record ID,2B,若为合法分区,其值为0x0000aa55。

硬盘MBR扇区

  · 主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。
  · 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。
  · 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。
  · 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。
  MBR的结构如下表所示
  
字节偏移(16进制)字节数描述
00~1BD446引导代码
1BE~1CD16分区表项1
1CE~1DD16分区表项2
1DE~1ED16分区表项3
1EE~1FD16分区表项4
1FE~1FF2签名值“55AA”
具体含义如下:
  (1)0x00~0x1BD:446个字节,包含一段指令,用以通知计算机如何访问分区表并定位操作系统的位置
  这部分的代码会因为操作系统不同而不同,利用引导代码可以实现多重系统引导。多系统引导有两种方法可以实现:一种方法是用Windows操作系统在引导分区中设置一段代码,先加载进入用户选择系统的界面,允许用户选择要进入的系统,再进入指定的系统;第二种方法是改变MBR中的引导代码,该代码直接呈现给用户一个选择系统的界面。
  (2)0x1BE~0x1FD:64个字节,4个分区表项,每个表项占用16个字节,描述一个分区,最多可以描述4个分区(这就是为什么MBR分区体系只能分成4个区【我们平时看到的分区一般可以从26个字母中选取任意多个当做分区标识(多于4个),这是因为那些分区是逻辑分区,这里的4个分区指的是主分区和扩展分区的数目,而逻辑分区是在扩展分区中划分出来的,也叫做二级、三级扩展分区。】)。
  分区表项并没有顺序要求,即不要求第一个分区表项在第二个分区表项前。
  分区表也不要求从第一个分区表项开始
  (3)0x1FE~0x1FF:2个字节,有效结束标志“55AA”。如果没有这个标志,操作系统会认为磁盘没有初始化,无法正确加载磁盘的分区。
   分区表参数含义(字节)
  1 活动(80)或非活动分区(00)
  2 3 4 起始的磁头 01 柱面 01 扇区00值
  5 分区类型符 NTFS(07 06)FAT32(0B 0C)扩展(0F 05)
  6 7 8 结束的磁头 FE 柱面 FF 扇区FF值
  9 10 11 12 本分区之前已用扇区数
  13 14 15 16 本分区大小
   虚拟MBR
  即 EBR (extent boot record)扩展引导记录
  其记录表项 与MBR相同 ,用于管理扩展还能分区上的逻辑驱动器。
;