zoukankan      html  css  js  c++  java
  • MBR和GPT概要学习

    MBR和GPT概要学习

     

    1.     MBR和GPT

    大家所最为熟知的分区方式同时也是最主流的主要有两种:MBR(Master Boot Record)和GPT(GUID Partition Table)。前者应用于绝大多数使用BIOS引导的PC设备(苹果使用EFI的方式),而后者主要是针对MBR的一些缺点进行了改进同时还可以兼容MBR并且支持2TB以上的存储(MBR不支持2TB以上的存储设备)。

         Android 2.x.x 版本上使用的是MBR,4.0版本以后就是使用的GPT分区方式。

     

    2.     MBR

    MBR,可以成为主引导记录或者主引导扇区。计算机开机之后,访问磁盘必须先访问这个MBR,获取到这个磁盘的相关信息,比如这个磁盘有几个分区啊,每个分区从哪开始,到哪结束,每个分区都是啥文件系统等等信息。

     

    MBR结构


    图1

    在来看另一张图:


    图2

     

    3.     GPT

    GPT分区全名为GloballyUnique Identifier Partition Table Format,即全局唯一标示磁盘分区表格式。

     

    GPT结构


    图3

    再来看另一张图


    图4

     

    可以看到,在GTP磁盘的第一个数据块中同样有一个与MBR(主引导记录)类似的标记,叫做PMBR,GPT硬盘中存在PMBR(Protective MBR)分区表和GPT分区表

     

    在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR也叫做保护性MBR(Protective MBR)。

     

    在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。

     

    3.1  GPT分区表头的格式

    分区表头的格式

    起始字节

    长度

    内容

    0

    8字节

    签名("EFI PART")

    8

    4字节

    修订

    12

    4字节

    分区表头的大小

    16

    4字节

    分区表头(第0-91字节)的CRC32校验,在计算时,把这个字段作为0处理,需要计算出分区串行的CRC32校验后再计算本字段

    20

    4字节

    保留,必须是 0

    24

    8字节

    当前LBA(这个分区表头的位置)

    32

    8字节

    备份LBA(另一个分区表头的位置)

    40

    8字节

    第一个可用于分区的LBA(主分区表的最后一个LBA + 1)

    48

    8字节

    最后一个可用于分区的LBA(备份分区表的第一个LBA − 1)

    56

    16字节

    硬盘GUID(在类UNIX系统中也叫UUID

    72

    8字节

    分区表项的起始LBA(在主分区表中是2)

    80

    4字节

    分区表项的数量

    84

    4字节

    一个分区表项的大小(通常是128)

    88

    4字节

    分区串行的CRC32校验

    92

    *

    保留,剩余的字节必须是0(对于512字节LBA的硬盘即是420个字节)

     

    3.2  GPT分区表项的格式

     

    GPT分区表项的格式

    起始字节

    长度

    内容

    0

    16字节

    分区类型GUID

    16

    16字节

    分区GUID

    32

    8字节

    起始LBA(小端格式)

    40

    8字节

    末尾LBA

    48

    8字节

    属性标签(如:60表示"只读")

    56

     72字节

    分区名(可以包括36个UTF-16(小端格式)字符)

     

  • 相关阅读:
    Linux学习
    官网地址
    Unsupported major.minor version 51.0
    获取select的option值
    网页中JS函数自动执行常用三种方法
    Python活力练习Day3
    时间复杂度的简单理解版本,非专业~~
    Python活力练习Day2
    Python活力练习Day1
    状压DP之LGTB 与序列
  • 原文地址:https://www.cnblogs.com/liang123/p/6325204.html
Copyright © 2011-2022 走看看