• linux下查看MBR实例分析


    一直想弄清楚MBR存放的是什么东西,今天仔细研究了下,查了不少资料,小总结一下:
    #dd if=/dev/sda of=mbrtest bs=512 count=1
    #od -x mbrtest
    我电脑上输出的最后几行是:
    0000660   0000 0000 0000 0000 ebb0 f0b1 0000 0100
    0000700   0001 fe07  ffff    003f 0000 1481 012a 0000
    0000720   ffc1   fe0f   ffff   14c0 012a d001 0826 0000
    0000740   0000 0000 0000 0000 0000 0000 0000 0000
    0000760   0000 0000 0000 0000 0000 0000 0000
    aa55
    0001000
    注意这个表看的时候要把每一组两个字节调换位置来看,如aa55在硬盘上存储的实际是
    55aa了,具体是little-endian的原因,这里就不多探究了。
    下面是一些分析:
    1、输出最前面的一列是8进制的位偏移,所以每行有16个字节了。
    2、mbr总共512字节,前446个字节是主引导记录,是bios加电自检后要运行的代码
    3、从第447个字节开始后的64个字节,每16个字节为一组,是硬盘分区表,就是
          红色的部分了。
    4、看到0xaa55了吗?这就是Boot Sector结束标志。

    5、关于硬盘分区表(DPT,Disk Partion Table)各个字节比较详细一点的说明如下:
         0 Activeflag.活动标志.若为0x80H,则表示该分区为活动分区.若为0x00H,则表示该分区为非活动分区.   
         1,2,3 该分区的起始磁头号,扇区号,柱面号:
                  磁头号 -- 1字节, 扇区号 -- 2字节低6位,柱面号 -- 2字节高2位 + 3字节   
        4 分区文件系统标志:  分区未用: 0x00H.   扩展分区: 0x05H, 0x0FH.  
                 FAT16分区: 0x06H.  FAT32分区: 0x0BH, 0x1BH, 0x0CH, 0x1CH.  
    NTFS分区: 0x07H.   
        5,6,7 该分区的结束磁头号,扇区号,柱面号,含义同上.   
       8,9,10,11 逻辑起始扇区号。表示分区起点之前已用了的扇区数.   
        12,13,14,15 该分区所占用的扇区数
    6、根据第五点分析我的硬盘,(1)有两个主分区 (2) 第1个主分区前几个字节是
          00  010100 07 feffff 0000003f 012a1481(表示数值的部分调整了顺序)
          00因此该分区不是活动分区;010100表示该分区从硬盘的0柱面1磁头1扇区开始;
          07代表该分区文件系统是ntfs;feffff其实是因为现在的硬盘超出了传统的
          表示范围用最大值表示;0000003f,开始之前已经用的扇区数为什么是0x3f呢,
          这个我也没搞懂,后面那个16进制的扇区数计算后大约9.35GB,与我的C盘大小
          基本吻合。后面的照此分析了。
    7、注意到一点就是没有activeflag为80的分区,我觉得原因是双系统装grub时覆盖了
         原系统的mbr,grub把活动分区划到了某个逻辑分区,系统启动查找分区表链时找到该分区。
  • 相关阅读:
    python2 类型转换和数值操作
    python2 实现的LED大数字效果
    Python2 基础语法(三)
    delphi操作ini文件
    [SQL]数据库还原 42000错误
    我的宝宝来了
    [DELPHI] D2009控件的安装
    DELPHI学习过程和函数
    [SQL][转载]SQL优化索引
    [SQL] SQL语句,存储过程执行时间
  • 原文地址:https://www.cnblogs.com/liujiahi/p/2196418.html
Copyright © 2020-2023  润新知