• 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(小端格式)字符)

     

  • 相关阅读:
    关于MySQL中的TRUNCATE语句
    关于在如何linux上部署禅道
    关于Python中的for...else...语句格式
    关于python中身份标识"is"与值运算符"=="
    Vite Vue3.0 使用 SVG Icon (自定义Vite插件)
    Python 远程开发树莓派 点亮LED灯
    Vue 基于elementUI的电梯导航
    JavaScript 原生数字千分位格式化函数(多功能的toLocaleString)
    JavaScript IntersectionObserver 图片懒加载及文字动态划线
    JavaScript await 优雅的捕获异常
  • 原文地址:https://www.cnblogs.com/liang123/p/6325204.html
Copyright © 2020-2023  润新知