电脑报官方论坛

 找回密码
 注册
查看: 38510|回复: 51

[教程分享] 浅谈GPT     [复制链接]

自成一派

BSD Lover

Rank: 11Rank: 11Rank: 11Rank: 11

树叶
1061
金币
1592
积分
1080

斑竹纪念章 系统名医(操作系统)

发表于 2012-5-15 10:51:20 |显示全部楼层
本帖最后由 woodelf 于 2012-5-16 09:56 编辑

对于GPT的基本概念,我就不叙述了,都在这里。下面主要讲讲GPT的实际应用。

由于目前的磁盘容量越来越大,传统的MBR分区表已经不能满足大容量磁盘的需求。传统的MBR分区表只能识别磁盘前面的2.2TB左右的空间,对于后面的多余空间只能浪费掉了,而目前希捷等磁盘厂商甚至早早就推出了单盘3TB的磁盘,因此,及早迁移到GPT非常有必要。除此以外,MBR分区表只能支持4个主分区或者3主分区+1扩展分区(包含随意数目的逻辑分区),而GPT在Windows下面可以支持多达128个主分区(在Linux或者Unix类不是很清楚,听说是没有限制……基于Itanium和其他架构的Windows或者Unix很早就已经使用了GPT)。

下面先介绍点MBR和GPT的区别。

MBR分区表:

在传统硬盘分区模式中,引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。

一个扇区的硬盘主引导记录MBR由4个部分组成。

•主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。

•出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。

•分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。

•结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。

GPT:

GPT的分区信息是在分区中,而不象MBR一样在主引导扇区,为保护GPT不受MBR类磁盘管理软件的危害,GPT在主引导扇区建立了一个保护分区(Protective MBR)的MBR分区表(此分区并不必要),这种分区的类型标识为0xEE,这个保护分区的大小在Windows下为128MB,Mac OS X下为200MB,在Window磁盘管理器里名为GPT保护分区,可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。

另外,为了保护分区表,GPT的分区信息在每个分区的头部和尾部各保存了一份,以便分区表丢失以后进行恢复。目前而言,对GPT支持比较好的磁盘管理软件推荐DiskGenius(似乎甚至支持GPT的分区表恢复),在Linux下面则有gparted和gdisk。

对于基于x86的Windows(这里指的是支持从GPT启动的Windows,见开头的链接),想要从GPT磁盘启动,主板的芯片组必须支持UEFI(这是强制性的,但是如果仅把GPT用作数据盘则无此限制)。至于如何判断主板芯片组是否支持UEFI,一般可以查阅主板说明书或者厂商的网址,也可以通过查看BIOS设置里面是否有UEFI字样。我自己的机器是AMD的970芯片组,可以支持UEFI。总体来说,在UEFI的支持方面,Intel芯片组更好一点。关于从GPT磁盘启动的Windows安装,后面会有涉及。

而对于Linux来说,可以选择两种GPT方案:

若芯片组不支持UEFI,那么可以使用普通的BIOS兼容分区+GPT的方案。这里说明一下,所谓的BIOS兼容分区,可以通过DiskGenius进行预先分区,分区类型是BIOS boot partition,大小一般1MB左右就足够了。这个分区的作用是存放引导管理器(一般是Grub2,Grub legacy默认不支持GPT,需要额外打补丁)的引导代码。我个人理解,这个分区应该是“伪装”的MBR,以便保证引导管理器和GPT的兼容。除了BIOS兼容分区之外,其他的分区就和正常的GPT一样了,可以随意分配。

若芯片组支持UEFI,那么推荐就使用UEFI+GPT的方案。只需要分出一个128MB的ESP分区就行了,这也可以通过DiskGenius完成。把磁盘分区类型转换成GPT时,DiskGenius会提示创建ESP分区。如果不打算和Windows组双系统,那么就不需要分配MSR分区,只要ESP分区就行了。

ESP的作用就是存放操作系统的引导管理器以及efi文件。在UEFI+GPT的磁盘上面,这个分区存放着操作系统引导的关键数据,虽然可以通过一定的手段在操作系统里面读取和写入数据,但是不推荐随便去动。

MSR分区即 Microsoft 保留 (MSR) 分区。是每个 GUID 分区表 (GPT)磁盘都要求的分区。系统组件可以将 MSR 分区的部分分配到新的分区以供它们使用。例如,将基本 GPT 磁盘转换为动态磁盘后,系统分配的 MSR 分区将被用作“逻辑磁盘管理器”(LDM) 元数据分区。MSR 分区的大小会因 GPT 磁盘的大小不同而发生变化。对于小于 16 GB 的磁盘,MSR 分区为 32 MB。对于大于 16 GB 的磁盘,MSR 分区为 128 MB。MSR 分区在“磁盘管理”中不可见,用户也无法在 MSR 分区上存储或删除数据。

关于这部分,后面会有进一步介绍。

上面基本上把GPT的各方面基本知识都进行了介绍,下面就讲具体的操作系统安装。注意:无论何种操作系统,都只有64位的系统能从GPT启动。

在UEFI+GPT全新安装Windows 7 x64:

首先,要保证所用的安装介质是原版Windows 7 x64的安装光盘(根据本人经验,很多重新封装的Windows 7 x64光盘会把EFI的启动程序去掉),U盘不保证一定可以(这要看具体的芯片组支持情况而定)。另外,记得要在BIOS设置里面打开UEFI的支持,具体的可以参阅主板说明书。

放入安装光盘,可以按快捷键选择启动介质,选择以UEFI模式启动安装光盘。通常,UEFI模式会列出单独的一个启动选项,举个例子,比如按快捷键之后,列出如下几个启动介质:1、P0:ST9320325AS,2、ASUS 20B1S(光驱),3、UEFI:ASUS 20B1S(UEFI模式的光盘启动),这时候,就应该选择第三项,那么安装光盘就会以UEFI模式进行启动,可以把Windows安装到GPT了。

在进入安装界面以后,如果想手动指定ESP和MSR分区的大小,可以先不要急着进行安装,按Shift+F10调出cmd,用diskpart命令行程序进行分区,因为Windows安装程序里面的分区软件不能手动指定ESP和MSR分区的大小。在cmd输入diskpart,就进入了diskpart分区软件。对于4KB的高级格式磁盘,无需担心对齐问题,GPT似乎本身就是以4KB的扇区进行分区的。然后就按照以下步骤分区吧,当然嫌麻烦的话,可以直接用PE里面的DiskGenius进行预先分区(推荐)。

DISKPART>list disk
//显示硬盘列表。用空间区分硬盘,记下前面的序号,假设目前是disk 0

DISKPART>select disk 0
//如果这个时候再list一遍可以看到disk 0前面有一星号。用clean清除分区表(记得备份数据)

DISKPART>clean
//我们可以在这里完成分区工作,也可以让安装程序去做。不过先要把分区转成GPT

DISKPART>convert gpt
//这一步之后,磁盘就是GPT分区表了。可以用图形界面安装去了。下面是手动分区。

//现在新建EFI分区。通常128M就够了,Windows默认是100M
DISKPART>create partition efi size=128
//这个分区是用来存放EFI引导文件的,默认是看不到里面的文件的。分区格式为FAT32。细心的同学应该注意到了,在MBR分区表让Windows 7给新硬盘分区并装系统的话,C盘前面会有100M多出来的空间。这里大同小异。

//然后是Microsoft System Recovery分区,默认是128M。
DISKPART>create partition msr size=128
//微软保留分区创建完毕。

DISKPART>create partition primary size=40963
//这就是C盘,大小随便指定,后面的剩余空间可以先空着,装完系统再分。

如此,基本的分区结构就创建完毕了,可以回到Windows安装程序继续进行安装了,以后的过程就和正常的MBR安装Windows 7一样了。

注意:对于想要通过模拟BIOS激活的同学,最好不要轻易尝试,因为模拟BIOS激活一般是通过替换MBR代码来达到激活的效果,在GPT里面,由于不存在MBR,这种方法可能会破坏分区表,导致无法引导。推荐自己购买正版密钥。

在UEFI+GPT全新安装Linux:

目前的Linux发行版中,很多都还没有加入UEFI支持,推荐使用最新版Fedora,对UEFI支持比较全面一点。安装过程就不赘述了,和UEFI+GPT的Windows 7安装差不多,都是以UEFI模式启动光盘进行安装,也要分100MB以上的ESP分区。其他安装过程并无特别。

在BIOS兼容分区+GPT全新安装Linux:

这个也没什么可以多说的,和正常的MBR分区安装Linux一样,安装程序会自动识别GPT和BIOS兼容分区并且把引导管理器安装到BIOS兼容分区里面(推荐使用Ubuntu,OpenSUSE等广泛采用Grub2的发行版)。

需要说明的是:很多人可能会有一种错误的观念,甚至有点排斥GPT,认为2.2TB以上的单块磁盘才有必要采用GPT,而对于容量相对较小的磁盘,GPT就不是必须的了。事实上,这种观念有一定道理,但并不完全正确。

首先,GPT和硬盘容量并不存在依赖或者因果关系,两者是独立的部分。

其次,即使目前主流的硬盘容量达不到,GPT也依然应当被认可。当然,由于目前XP尚有很大的份额,可能迁移到GPT的条件还不成熟。

第三,别看我上面洋洋洒洒介绍那么多,使得GPT看上去貌似很复杂的样子。实际上,对于用户来说,我们完全不用了解GPT的分区结构是如何的,GPT上面的操作系统是如何引导的。这些全都是不需要理会的内容,我们只管应用就行了。

当然,尽管GPT的历史已经算是悠久了,但是并没有大规模普及,相应的磁盘和分区管理工具可能还不成熟。但是本人相信,随着硬件的发展,GPT的普及并不会太遥远。如前面所说,尽管GPT在PC机并不普及,但是在Macintosh和大型的Unix机器,GPT很早就已经进入应用。

以上就是对GPT应用的基本介绍,总的来说,GPT的好处还是很多的。而为了以后的大容量磁盘考虑,本人也推荐尽快升级到GPT(当然,Windows用户比较悲催,必须要主板芯片组支持UEFI)。

PS:关于UEFI的介绍,我可能会另外开帖,这又是另一个需要长篇介绍的东西……本帖主体内容就是以上了,具体问题可以慢慢探讨。
已有 3 人评分评分 金币 树叶 收起 理由
ranger76 + 1 精品文章
Ricky天涯 + 1 回不了贴呢,我想问下GPT怎么装双系统?
cirsina + 5 + 10 + 3 精品文章

总评分: 评分 + 5  金币 + 12  树叶 + 3   查看全部评分

/dev/ada1:Gentoo Linux+ZFS (GPT)
/dev/ada2:FreeBSD 9.1+ZFS (GPT)
个人网站:http://woodelf.org
开源OS爱好者:226246994

自成一派

BSD Lover

Rank: 11Rank: 11Rank: 11Rank: 11

树叶
1061
金币
1592
积分
1080

斑竹纪念章 系统名医(操作系统)

发表于 2012-5-15 10:57:26 |显示全部楼层
求加精,求加分。
PS:这文章能去报纸投稿不……
/dev/ada1:Gentoo Linux+ZFS (GPT)
/dev/ada2:FreeBSD 9.1+ZFS (GPT)
个人网站:http://woodelf.org
开源OS爱好者:226246994

自成一派

半个水货 半只小白

Rank: 11Rank: 11Rank: 11Rank: 11

树叶
631
金币
3204
积分
1084
发表于 2012-5-15 11:08:25 |显示全部楼层

RE: 讲点关于GPT的基本知识

woodelf 发表于 2012-5-15 10:57
求加精,求加分。
PS:这文章能去报纸投稿不……

乃不是版主么?不能自己加么??
目前玩超大硬盘的玩家还是少,但是用激活旗舰win7的。。。你一定懂的。。。

最后小白求解:那些机箱塞进N块硬盘的都是这么弄过来的吗?膜拜。。。

自成一派

BSD Lover

Rank: 11Rank: 11Rank: 11Rank: 11

树叶
1061
金币
1592
积分
1080

斑竹纪念章 系统名医(操作系统)

发表于 2012-5-15 11:33:39 |显示全部楼层
yyggshsh 发表于 2012-5-15 11:08
乃不是版主么?不能自己加么??
目前玩超大硬盘的玩家还是少,但是用激活旗舰win7的。。。你一定懂的。 ...

多块硬盘只要接口够,随便怎么塞,跟GPT没关系。
对于单块容量2.2TB以上的磁盘,必须采用GPT。
/dev/ada1:Gentoo Linux+ZFS (GPT)
/dev/ada2:FreeBSD 9.1+ZFS (GPT)
个人网站:http://woodelf.org
开源OS爱好者:226246994

自成一派

半个水货 半只小白

Rank: 11Rank: 11Rank: 11Rank: 11

树叶
631
金币
3204
积分
1084
发表于 2012-5-15 11:50:04 |显示全部楼层

RE: 讲点关于GPT的基本知识

woodelf 发表于 2012-5-15 11:33
多块硬盘只要接口够,随便怎么塞,跟GPT没关系。
对于单块容量2.2TB以上的磁盘,必须采用GPT。

如果大于2.2T的硬盘不装系统只作从盘的话是不是就不用了呢?

自成一派

BSD Lover

Rank: 11Rank: 11Rank: 11Rank: 11

树叶
1061
金币
1592
积分
1080

斑竹纪念章 系统名医(操作系统)

发表于 2012-5-15 11:56:33 |显示全部楼层
本帖最后由 woodelf 于 2012-5-15 11:58 编辑
yyggshsh 发表于 2012-5-15 11:50
如果大于2.2T的硬盘不装系统只作从盘的话是不是就不用了呢?

跟装不装系统都没关系,MBR分区表本身就只能识别到2.2TB的空间,设计之初就没考虑到以后的大容量硬盘。
/dev/ada1:Gentoo Linux+ZFS (GPT)
/dev/ada2:FreeBSD 9.1+ZFS (GPT)
个人网站:http://woodelf.org
开源OS爱好者:226246994

自成一派

半个水货 半只小白

Rank: 11Rank: 11Rank: 11Rank: 11

树叶
631
金币
3204
积分
1084
发表于 2012-5-15 12:04:34 |显示全部楼层

RE: 讲点关于GPT的基本知识

woodelf 发表于 2012-5-15 11:56
跟装不装系统都没关系,MBR分区表本身就只能识别到2.2TB的空间,设计之初就没考虑到以后的大容量硬盘。

受教。。。多谢。。。O(∩_∩)O
头像被屏蔽

别发言

强烈建议把撤销VIP的权利给版主

树叶
56
金币
140
积分
96

女孩专用 白客小右 快乐天使 论坛之宠 天使情结 雷人勋章 爱乐一派

发表于 2012-5-15 12:26:10 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

自成一派

BSD Lover

Rank: 11Rank: 11Rank: 11Rank: 11

树叶
1061
金币
1592
积分
1080

斑竹纪念章 系统名医(操作系统)

发表于 2012-5-15 12:30:22 |显示全部楼层
hacker6186 发表于 2012-5-15 12:26
单碟3T毕竟在很长一段时间内都不会成为主流

等到大家都开始用3T的时候,相关的配套软硬件各种教程复制粘贴 ...

没有所谓的因为要用3TB硬盘,才需要GPT,两者没有因果关系。大容量硬盘的支持只是GPT诸多特性里面不那么重要的一个方面,更重要的还是在于便捷的分区管理和优秀的分区结构。
/dev/ada1:Gentoo Linux+ZFS (GPT)
/dev/ada2:FreeBSD 9.1+ZFS (GPT)
个人网站:http://woodelf.org
开源OS爱好者:226246994

登峰造极

不会C++

Rank: 10Rank: 10Rank: 10

树叶
161
金币
11493
积分
786

系统名医(操作系统)

发表于 2012-5-15 12:30:41 |显示全部楼层
总体来说,需要解释的东西太多而篇幅所限,很多细节都没有。前几天考虑过gpt,看过这篇文章依然没有足够理由和信心转。

几年之后会不会出现“MBR32”和“exMBR”之流,或者出现“MBRDisk”之类的软件啊,哈哈哈哈。
您需要登录后才可以回帖 登录 | 注册


感谢版主

Archiver|手机版|电脑报官方网站 ( 渝ICP备10009040号 

GMT+8, 2017-11-19 01:59

回顶部