zoukankan      html  css  js  c++  java
  • 主引导记录(MBR)分析

    主引导记录Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。详情:http://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95

    首先使用shell如何查看MBR信息:

    1 #使用dd导出MBR到mbr.bin文件
    2 dd if=/dev/sda of=mbr.bin bs=512 count=1 
    3 #使用dd导出MBR并且使用xxd显示
    4 dd if=/dev/sda bs=512 count=1 | xxd
    5 #使用dd导出MBR并且使用xxd显示分区信息
    6 dd if=/dev/sda bs=512 count=1 | xxd -s 446

    虚拟机上的使用实例:

     1 #取得sda中的MBR中的分区信息,得出2个分区,第一个分区为活动分区(可以引导系统)
     2 #第一个分区信息存储在mbr的0x01be偏移
     3 #最后一个分区结束在mbr的0x01fe偏移
     4 #至于16个字节的具体含义,就参见下文
     5 [root@localhost ~]# dd if=/dev/sda bs=512 count=1 |xxd -s 446 -c 16 -g 1   # dd if=/dev/sda bs=512 count=1 |xxd -s 0x01be -c 16 -g 1
     6 00001be: 80 20 21 00 83 dd 1e 3f 00 08 00 00 00 a0 0f 00  . !....?........
     7 00001ce: 00 dd 1f 3f 8e fe ff ff 00 a8 0f 00 00 58 b0 03  ...?.........X..
     8 00001de: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
     9 00001ee: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    10 1+0 records in
    11 1+0 records out
    12 512 bytes (512 B) copied, 0.000361566 s, 1.4 MB/s
    13 00001fe: 55 aa                                            U.

     上面只能表示4个主分区,不能表示扩展分区。扩展分区和主分区的具体存储如下图:

    以下内容从维基百科上摘录,整个MBR分为下面三部分。

    启动代码

    主引导记录最开头是第一阶段引导代码。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后将控制权交给硬盘上的引导程序(如GNU GRUB)。MBR是由分区程序(如Fdisk)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而能够实现多系统引导

    硬盘分区表

          硬盘分区表占据主引导扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。具体每个字节的定义可以参见硬盘分区结构信息。下面是一个例子:

    如果某一分区在硬盘分区表的信息如下

    80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

    则我们可以看到,最前面的"80"是一个分区的激活标志,表示系统可引导;"01 01 00"表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;"0B"表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);"FE BF FC"表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;"3F 00 00 00"表示首扇区的相对扇区号为63;"7E 86 BB 00"表示总扇区数为12287662。

    对于现代大于8.4G的硬盘,CHS已经无法表示, BIOS使用LBA模式,对于超出的部分,CHS值通常设为 FEFFFF, 并加以忽略,直接使用08-0f的4字节相对值,再进行内部转换.

    硬盘分区结构信息
    偏移长度(字节)意义
    00H 1 分区状态:00-->非活动分区;80--> 活动分区;
    其它数值没有意义
    01H 1 分区起始磁头号(HEAD),用到全部8位
    02H 2 分区起始扇区号(SECTOR),占据02H的位0-5;
    该分区的起始磁柱号(CYLINDER),占据
    02H的位6-7和03H的全部8位
    04H 1 文件系统标志位
    05H 1 分区结束磁头号(HEAD),用到全部8位
    06H 2 分区结束扇区号(SECTOR),占据06H的位0-5;
    该分区的起始磁柱号(CYLINDER),占据
    06H的位6-7和07H的全部8位
    08H 4 分区起始相对扇区号
    0CH 4 分区总的扇区数

          结束标志字

    结束标志字55,AA(偏移1FEH-偏移1FFH)是主引导扇区的最后两个字节,是检验主引导记录是否有效的标志。

    未完成!!!

  • 相关阅读:
    LeetCode第[15]题(Java):3Sum (三数之和为目标值)——Medium
    LeetCode第[11]题(Java):Container With Most Water (数组容器盛水)——Medium
    LeetCode第[4]题(Java):Median of Two Sorted Arrays (俩已排序数组求中位数)——HARD
    LeetCode第[1]题(Java):Two Sum (俩数和为目标数的下标)——EASY
    FILTER:progid:DXImageTransform.Microsoft.Gradient (转)
    青蛙的烦恼(dp好题)
    凸多边形的三角剖分(dp好题)
    火车安排问题(dp好题)
    快餐问题(dp好题)
    给出一个长度为n的数列,请对于每一个数,输出他右边第一个比他大的数。n<=100000.
  • 原文地址:https://www.cnblogs.com/jevan/p/2661995.html
Copyright © 2011-2022 走看看