豆豆 一个不起眼的经验分享博客。

MBR&GPT硬盘分区类型&属性详解(Win下更改/设置OEM/恢复分区方法)

2014/09/08 09:04
127,107
17

最后修改于 2014年12月29日 23:24

打开Windows系统的磁盘管理,你可能会在硬盘上发现一个或若干个特殊分区,他们一般都带有特殊的标记,并且通常都具有隐藏属性,比如,OEM分区、恢复分区皆如此。那么这些分区是靠什么表现出特殊属性的呢?而我们又能不能改变这些属性呢?本文就来详细解释这个问题。

为方便理解本文内容,建议先阅读《UEFI+GPT引导基础篇(一):什么是GPT,什么是UEFI?》一文,这篇文章简单介绍了MBR和GPT硬盘分区原理,告诉我们硬盘上各分区的相关信息都存储在各自的分区表中:MBR硬盘分区信息存储在MBR分区表中;而GPT硬盘分区信息则存储在GPT分区表中,除此之外,GPT硬盘还包含一个PMBR分区表。本文下面要讲到的东西可以看作是对这些内容的一点扩展,它捎带回答了这两个问题:

1、GPT硬盘中存在PMBR分区表和GPT分区表,那么系统凭借什么将其识别为GPT硬盘?
2、我们还知道,MBR硬盘也可以实现UEFI引导,那么其用于实现引导的分区(FAT32分区)是不是也有像GPT硬盘中的“EFI系统分区”这样鲜明的标志?

MBR硬盘和GPT硬盘使用不同的分区规则,我们先来看MBR硬盘。

MBR硬盘的MBR分区表中包含了硬盘上各主分区的分区信息,每个分区信息中都有一段内容(1字节,即8位)用来表示分区类型。可以在这里查看分区类型列表(十六进制表示)。Windows下可识别的分区类型主要有:

0x42 表示LDM数据分区
0x27 表示恢复分区(WinRE分区、Acer等系统备份分区)。
0x07 表示普通分区(Windows分区、数据分区。默认分区类型。)
0x12 表示OEM分区(康柏、IBM Thinkpad)。
0x84 表示OEM分区(Intel Rapid Start technology)。
0xDE 表示OEM分区(戴尔)。
0xFE 表示OEM分区
0xA0 表示OEM分区(Laptop hibernation partition)
0xEE 表示该分区表是PMBR,紧随其后的应该是GPT分区表头和GPT分区表,因此这是一块GPT硬盘。
0xEF 表示EFI系统分区

Windows正是根据分区表中设定的分区类型决定分区的用途(OEM或其他)和属性(是否隐藏等)。其他大多数分区类型Windows无法识别。

Windows下更改分区类型的方法

自Vista开始,系统自带的diskpart分区管理工具已具备更改分区类型的功能。更改分区类型,只需在具有管理员身份的CMD中依次执行以下几个命令即可(括号内为注释内容):

Diskpart(打开diskpart工具)
List disk(可选。帮助查看连接到电脑的所有存储器及其编号)
Select disk N(选择地N个硬盘,N为硬盘编号)
List part(可选。帮助查看选定硬盘上的所有分区及其编号)
Select part N(选定第N个分区,N代表分区编号)
Set id = xx(设定分区类型,xx代表十六进制分区类型ID,省略0x)

举两个我们可能需要用到的例子:

① 改变隐藏的OEM分区类型,从而能够查看OEM分区中的内容。

注意:如果还想更改回去,请在select part之后运行detail part记下分区默认的分区类型,方便事后还原。

partition type setup-mbr-1

完成图中的操作后,如果没有自动分配盘符,可以尝试重启在磁盘管理中手动添加“驱动器号”紧接着图中最后一步执行以下命令添加盘符(e为盘符)。

assign letter=e

同理,如果要将某一个分区设置为OEM分区,只需将其分区类型设置为出厂默认的OEM分区类型ID或12或DE即可。

② 作为博客Win8/8.1备份教程的补充。我们将系统备份映像存放到单独的隐藏分区中,以保护备份映像不受到损坏。

首先,准备一个可容纳备份映像文件的空分区(主分区、逻辑分区都可以),将备份映像按下图所示的路径存放(\sources\install.wim)

partition type setup-mbr-2

然后,配置恢复映像,将分区类型设置为“恢复分区”。如下图所示。

partition type setup-mbr-3

完成图中的步骤,用于恢复系统的系统备份分区就被隐藏掉了。如果计算机中还能够看到该分区(有盘符),紧接着图中最后一步运行下面的命令删除盘符:

remove

=============

那么,GPT硬盘上又是怎么样的情况呢?

在GPT分区表中的分区信息中同样有一段用于表示分区类型的内容(16字节,即128位)。可以在这里查看分区类型列表(十六进制的GUID表示)。Windows下常见的GUID分区类型主要有:

C12A7328-F81F-11D2-BA4B-00A0C93EC93B            EFI系统分区
DE94BBA4-06D1-4D40-A16A-BFD50179D6AC         WinRE恢复环境分区、系统备份分区
E3C9E316-0B5C-4DB8-817D-F92DF00215AE            微软保留(MSR)分区
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7            基本数据分区
5808C8AA-7E8F-42E0-85D2-E1E90434CFB3            逻辑软盘管理工具元数据分区
AF9B60A0-1431-4F62-BC68-3311714A69AD            逻辑软盘管理工具数据分区
37AFFC90-EF7D-4e96-91C3-2D7AE055B174          IBM通用并行文件系统(GPFS)分区
E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D          存储空间(Storage Spaces)分区

BFBFAFE7-A34F-448A-9A5B-6213EB736C22           Lenovo OEM分区(一键还原启动分区)
F4019732-066E-4E12-8273-346C5641494F               Sony OEM分区(一键还原启动分区)

GPT分区类型用于区别分区的用途,GPT分区表中的分区信息中除了分区类型外,还用了另一段区域(8字节,即64位)来表示分区属性,各位作用如下

0x0000000000000001(0位)  将分区表示为必需分区,不允许用户更改数据(Windows下将标记为OEM分区)
0x8000000000000000(63位)   当硬盘被挂载到另一台电脑时默认不分配盘符。
0x4000000000000000(62位)  表示该分区不可被检测到。
0x2000000000000000(61位)  表述该分区为另一个分区的卷影拷贝。
0x1000000000000000(60位)  为分区设置只读属性。

关于分区属性,更详细的介绍参考《CREATE_PARTITION_PARAMETERS structure

Windows下通常采用以下分区类型和分区属性组合:

普通数据分区——EBD0A0A2-B9E5-4433-87C0-68B6B72699C7——0x0000000000000000
OEM分区——无特定GUID值,OEM决定——0x8000000000000001
WinRE分区——DE94BBA4-06D1-4D40-A16A-BFD50179D6AC——0x8000000000000001
EFI系统分区——C12A7328-F81F-11D2-BA4B-00A0C93EC93B——0x8000000000000001
MSR保留分区——E3C9E316-0B5C-4DB8-817D-F92DF00215AE——0x8000000000000000
恢复/备份分区——DE94BBA4-06D1-4D40-A16A-BFD50179D6AC——0x8000000000000001

更改GPT分区类型和分区属性的方法:

在管理员身份的CMD中(Vista以上版本系统)依次执行以下命令即可(括号内为注释内容):

Diskpart    (打开diskpart工具)
List disk    (可选。帮助查看连接到电脑的所有存储器及其编号)
Select disk N    (选择地N个硬盘,N为硬盘编号)
List part    (可选。帮助查看选定硬盘上的所有分区及其编号)
Select part N    (选定第N个分区,N代表分区编号)
Set id = xx    (设定分区类型,xx代表十六进制GUID分区类型ID)
gpt attributes = 0xXXXXXXXXXXXXXXXX    (设置分区属性,XXXXXXXXXXXXXXXX代表分区属性)

同样采用上文MBR硬盘中的两个例子,其在GPT硬盘中的操作方法如下:

① 改变隐藏的OEM分区类型,从而能够查看OEM分区中的内容。

注意:如果还想更改回去,请在select part之后运行detail part记下分区默认的分区类型和属性,方便事后还原。

partition type setup-gpt-1

完成图中的操作后,如果没有自动分配盘符,可以尝试重启在磁盘管理中手动添加“驱动器号”紧接着图中最后一步执行以下命令添加盘符(e为盘符)。

assign letter=e

同理,如果要将某一个分区设置为OEM分区,只需将其分区类型设置为出厂默认或{EBD0A0A2-B9E5-4433-87C0-68B6B72699C7}或其他非特殊(即上文列表中之外)的GUID,再将其属性设置为0x8000000000000001(隐藏)或0x0000000000000001即可。

② 作为博客Win8/8.1备份教程的补充。我们将系统备份映像存放到单独的隐藏分区中,以保护备份映像不受到损坏。

首先,准备一个可容纳备份映像文件的空分区,将备份映像按下图所示的路径存放(\sources\install.wim)

partition type setup-gpt-2

然后,配置恢复映像,将分区类型设置为“恢复分区”。如下图所示。

partition type setup-gpt-3

完成图中的步骤,用于恢复系统的系统备份分区就被隐藏掉了。如果计算机中还能够看到该分区(有盘符),紧接着图中最后一步运行下面的命令删除盘符即可:

remove

如果文章有查看密码,那就是ithome.com

评论 (共17条)

  1. 怎么破啊???快吐血了、、、
    icrosoft Windows [版本 10.0.16299.309]
    (c) 2017 Microsoft Corporation。保留所有权利。

    C:\Windows\system32>diskpart

    Microsoft DiskPart 版本 10.0.16299.15

    Copyright (C) Microsoft Corporation.
    在计算机上: IMAC2017

    DISKPART> list disk

    磁盘 ### 状态 大小 可用 Dyn Gpt
    ——– ————- ——- ——- — —
    磁盘 0 联机 465 GB 0 B *
    磁盘 1 联机 2794 GB 0 B *
    磁盘 2 联机 447 GB 0 B *

    DISKPART> select disk 1

    磁盘 1 现在是所选磁盘。

    DISKPART> list part

    分区 ### 类型 大小 偏移量
    ————- —————- ——- ——-
    分区 1 保留 128 MB 17 KB
    分区 2 主要 2794 GB 129 MB
    ISKPART> select disk 1

    磁盘 1 现在是所选磁盘。

    DISKPART> list part

    分区 ### 类型 大小 偏移量
    ————- —————- ——- ——-
    分区 1 保留 128 MB 17 KB
    分区 2 主要 2794 GB 129 MB

    DISKPART> select part 4

    指定的分区无效。
    请选择一个有效分区。

    没有选择分区。

    DISKPART> select part 2

    分区 2 现在是所选分区。

    DISKPART> set id = 07 override

    指定的类型的格式不正确。
    有关此命令类型的详细信息,请使用 HELP SET 命令

    DISKPART> set id=07 override

    气人啊,不知为何最后一步一直提示格式不正确。。

    此命令在动态磁盘或 Microsoft 保留分区上无法使用。

    示例:

    SET ID=07 OVERRIDE
    SET ID=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7

  2. 请问我这种情况怎么改,hp笔记本拿回来后无法一键恢复,因为原来 的C盘被分成两个盘了启动能进入recovery界面,但不能点恢复系统,在win8.1里提示,请插入介质,list parttion 显示有六个分区 (1到6),其中recovery分区在第六个,用reagentc /info显示恢复映像索引是4(0到4) ,如果用diskgen查看分区的话,如果没有新分出的D盘的话分区序号4就是原来的recovery分区,现在恢复分区recovery变成了序号5。其实具体情况就是这样的:买来后,电脑只有两个盘C和D,其中D是recovery分区,但C盘被分成两个区了,导致原来的recoveryD盘变成E盘,试过把D盘删除,但E盘还是不会变成D盘。请问这种情况怎么改?

  3. 想起来一个问题,mbr分区表中,每个分区各用4+4个字节记录起始扇区号和占用扇区数吗?那第四个分区不是能从2^32扇区开始,再用2^32个扇区 还有的文章说mbr硬盘最多用2.2T,而不是2T。。。

    1. 应该这么理解:每个扇区都需要分配一个地址才能访问,所以是地址个数决定了可识别的最大容量,那么MBR最大容量为2^32*512字节。你可以自己算一下这是多大。为什么会出现两个大小呢?这是因为采用的算法不一样:1、计算机中的标准算法(电脑实际显示)2^32*512 B=2^32*512/1024 KB=(2^32*512/1024)/1024 MB=((2^32*512/1024)/1024)/1024 GB =(((2^32*512/1024)/1024)/1024)/1024 TB = 2TB2、硬盘制造商的算法(硬盘标称容量)2^32*512 B=2^32*512/1000 KB=(2^32*512/1000)/1000 MB=((2^32*512/1000)/1000)/1000 GB =(((2^32*512/1000)/1000)/1000)/1000 TB ≈ 2.199 TB

  4. 关于系统引导、安装、激活很多基础的知识,搜遍网络都没有精确详细系统的文章,您的博客真是太有用了!!

发表评论

您的电子邮箱地址不会被公开。