UEFI+GPT引导全方位讲解:什么是GPT,什么是UEFI

  • 2
  • 59,044 views
  • A+
所属分类:小马讲堂

其实UEFI、GPT都不是什么新鲜玩意了,只不过因为预装Win8电脑指定采用了这一标准所以仿佛是在一夜之间关于UEFI启动Windows的文章就遍地开花了,很多人大概也是头一次听说世上还有这玩意。既然UEFI、GPT是“新”技术,那么就必然有较旧技术(BIOS+MBR)更先进、更NB的地方。到底NB在哪里呢?下面来简单比较一下:

GPT及其优势

GPT和MBR是两种不同的分区方案。目前在Windows下广泛采用的磁盘分区方案仍然是MBR分区结构,但不容怀疑GPT是今后的趋势。我们可将MBR磁盘分区结构用下图简单表示(Windows下基本磁盘、4个主分区):

UEFI+GPT引导全方位讲解:什么是GPT,什么是UEFI

为了方便计算机访问硬盘,把硬盘上的空间划分成许许多多的区块(英文叫sectors,即扇区),然后给每个区块分配一个地址,称为逻辑块地址(即LBA)。

在MBR磁盘的第一个扇区内保存着启动代码和硬盘分区表。启动代码的作用是指引计算机从活动分区引导启动操作系统(BIOS下启动操作系统的方式);分区表的作用是记录硬盘的分区信息。在MBR中,分区表的大小是固定的,一共可容纳4个主分区信息。在MBR分区表中逻辑块地址采用32位二进制数表示,因此一共可表示2^32(2的32次方)个逻辑块地址。如果一个扇区大小为512字节,那么硬盘最大分区容量仅为2TB。

GPT磁盘分区结构可用下图简单表示(Windows下基本磁盘):

UEFI+GPT引导全方位讲解:什么是GPT,什么是UEFI

可以看到,在GTP磁盘的第一个数据块中同样有一个与MBR(主引导记录)类似的标记,叫做PMBR。PMBR的作用是,当使用不支持GPT的分区工具时,整个硬盘将显示为一个受保护的分区,以防止分区表及硬盘数据遭到破坏。UEFI并不从PMBR中获取GPT磁盘的分区信息,它有自己的分区表,即GPT分区表。

GPT的分区方案之所以比MBR更先进,是因为在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。在Windows中,微软设定GPT磁盘最大分区数量为128个。另外,GPT分区方案中逻辑块地址(LBA)采用64位二进制数表示,可以计算一下2^64是一个多么庞大的数据,以我们的需求来讲完全有理由认为这个大小约等于无限。除此之外,GPT分区方案在硬盘的末端还有一个备份分区表,保证了分区信息不容易丢失。

Windows操作系统对GPT磁盘的支持

因为BIOS无法识别GPT分区,所以BIOS下GPT磁盘不能用于启动操作系统,在操作系统提供支持的情况下可用于数据存储。

UEFI可同时识别MBR分区和GPT分区,因此UEFI下,MBR磁盘和GPT磁盘都可用于启动操作系统和数据存储。不过微软限制,UEFI下使用Windows安装程序安装操作系统是只能将系统安装在GPT磁盘中。

下表列出了Windows各版本操作系统对GPT磁盘的支持程度:

UEFI+GPT引导全方位讲解:什么是GPT,什么是UEFI

UEFI及其优势

UEFI是BIOS的一种升级替代方案。关于BIOS和UEFI二者的比较,网络上已经有很多相关的文章,这里不再赘述,仅从系统启动原理方面来做比较。UEFI之所以比BIOS强大,是因为UEFI本身已经相当于一个微型操作系统,其带来的便利之处在于:

首先,UEFI已具备文件系统的支持,它能够直接读取FAT分区中的文件;什么是文件系统?简单说,文件系统是操作系统组织管理文件的一种方法,直白点说就是把硬盘上的数据以文件的形式呈现给用户。Fat32、NTFS都是常见的文件系统类型。

其次,可开发出直接在UEFI下运行的应用程序,这类程序文件通常以efi结尾。既然UEFI可以直接识别FAT分区中的文件,又有可直接在其中运行的应用程序。那么完全可以将Windows安装程序做成efi类型应用程序,然后把它放到任意fat分区中直接运行即可,如此一来安装Windows操作系统这件过去看上去稍微有点复杂的事情突然就变非常简单了,就像在Windows下打开QQ一样简单。而事实上,也就是这么一回事。

要知道,这些都是BIOS做不到的。因为BIOS下启动操作系统之前,必须从硬盘上指定扇区读取系统启动代码(包含在主引导记录中),然后从活动分区中引导启动操作系统。对扇区的操作远比不上对分区中文件的操作更直观更简单,所以在BIOS下引导安装Windows操作系统,我们不得不使用一些工具对设备进行配置以达到启动要求。而在UEFI下,这些统统都不需要,不再需要主引导记录,不再需要活动分区,不需要任何工具,只要复制安装文件到一个FAT32(主)分区/U盘中,然后从这个分区/U盘启动,安装Windows就是这么简单。

weinxin
请关注小马官方微信公众号
感谢大家一直以来对小马的支持,如果您有什么困惑或者建议,欢迎大家随时呼叫小马

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  0   博主  0

    • 看我烟色行事 0

      笔记本双系统分别装在两个硬盘内是否可以实现双系统切换效果?第二块硬盘为光驱硬盘盒挂载

      • 狂热追求者 1

        能否使用GPT分区(或识别或启动),取决于三个支持条件,一是OS内核,二是引导管理器,也就是Bootloader,第三就是磁盘工具,比如分区工具等等。GPT硬盘的分区表不可以直接使用16进制编辑器修改。虽然GPT是EFI项目的派生产品,但是GPT本身并不依赖EFI,这个必须要明确。主板不支持UEFI – 普通的BIOS兼容分区+GPT,和正常的MBR分区安装Linux一样,安装程序会自动识别GPT和BIOS兼容分区并且把引导管理器安装到BIOS兼容分区里面(推荐使用Grub2的发行版)。
        DiskGenius进行预先分引导启动区,分区类型是 BIOS boot partition ,大小一般1~2MB左右就足够了。这个分区的作用是存放引导管理器(一般是Grub2,GRUB2 包含 GPT 支持;Grub legacy0.97默认不支持GPT,需要额外打补丁)的引导代码。其他的分区就和正常的GPT一样了,可以随意分配。用 cgdisk 或 GNU Parted 创建 2 MB 的无文件系统分区。只要位于磁盘的前 2TiB 空间内,分区位置没有要求。但是建议放在磁盘开始位置,/boot 之前。cgdisk 中设置类型为 “EF02” 或在GNU Parted 中设置 set bios_grub on 标记。
        1.BIOS boot partition //2M即可,从BIOS引导GPT需要,仅适用于BIOS+linux+GPT,位置:分区表后,硬盘前2TB内任意位置,建议放在磁盘开始位置,/boot 之前
        2.ESP //200M即可-fat32格式,UEFI需要,不论系统类型,双启时该分区为 boot on 标识
        3.MSR //200M即可,UEFI+windows或双启需要
        4.GPT数据盘以上三个分区都可以不要,但将不能在该盘上安装系统。