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

UEFI+GPT引导基础篇(一):什么是GPT,什么是UEFI?

2013/06/08 00:14
322,402
59

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

其实关于UEFI的几篇文章很早就写下了,只是自己读了一遍感觉很不满意,就决定重写。目的是想用最简单直白的语言把内容写出来,让每个人都能轻松读懂。当然,如果你已经对这些内容有了很深的理解的话,这篇文章除了浪费你的时间外恐怕是别无益处了,建议去UEFI官方网站下载UEFI规范文档,那里详细阐述了UEFI、GPT的每个技术细节。

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

GPT及其优势

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

MBR分区结构
MBR分区结构

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

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

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

GPT分区结构
GPT分区结构

可以看到,在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磁盘的支持程度:

32位Windows对GPT分区支持情况
32位Windows对GPT分区支持情况
64位Windows对GPT分区支持情况
64位Windows对GPT分区支持情况

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就是这么简单。后面会有专门的文章来详细介绍UEFI下安装Windows7、8的方法。

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

文章匆忙改就,如有错误之处望指出。

 

预装Win8电脑重装系统及UEFI+GPT安装Windows7/8相关教程:

预装64位Win8/8.1电脑安装64位Win7详细过程(单/双系统)
预装Win8中文版电脑系统升级方法指导
用于引导Windows的GPT磁盘(预装Win8电脑)各分区作用详解
预装Win8电脑重装系统实现自动激活的几个注意事项

UEFI+GPT引导基础篇(一):什么是GPT,什么是UEFI?
UEFI+GPT引导实践篇(一):切换到UEFI启动,准备安装介质
UEFI+GPT引导实践篇(二):UEFI引导安装64位Win7/Win8

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

评论 (共59条)

  1. 用华为MATEBOOK安装VHD系统,VHD释放WIN7镜像,不论是MBR格式,还是转为GPT格式,在尝试进入VHD系统时,总是显示自动修复,然后修复失败,不能成功进入VHD。启动项改成EFI或EXE都无济于事。能帮助分析一下这个情况吗?谢谢。

  2. 博主厉害!之所以厉害有两点 ① 见识厉害,② 表述厉害。
    同时拥有这两点的人不多。有些话题人们讲了一大堆,读者还是一头雾水。难得!

  3. 有一点没看懂。“只要复制安装文件到一个FAT32(主)分区/U盘中,然后从这个分区/U盘启动,安装Windows就是这么简单。”这句话,复制安装文件指的是系统镜像么?如果是这样的话,那么4.3G左右的镜像文件能放到FAT32分区的U盘中么?

    1. 别忙着批判一番,别人说的有点道理,因为UEFI是BIOS的一种,BIOS现在分为Legacy和UEFI两种,并不能吧BIOS和UEFI并列。
      而网上经常把这两个玩意搞混,说到底那位先生纠结的是以个语文学问题。

  4. 问一个复杂的一点的问题。一台机器上有2个硬盘,想一个硬盘跑一个系统,例如1#Vista SP2、2#Win8.1,都用UEFI+GPT,请问只要一个EFI分区,还是一个硬盘一个EFI分区,亦或是两种情况都支持?最好是安装好系统后,拆掉其中任意一个硬盘,都能正常启动另一个硬盘上的系统。

  5. 我设置为legacy boot,老毛桃u盘引导启动,安装win7,提示windows无法安装在gpt分区。但是如果设置efi启动,u盘就无法引导了。efi启动的时候只能启动一个linux的命令行系统。

    1. legacy boot 和 MBR对应;UEFI和GPT对应;两个选择:1、legacy boot下U盘启动,安装时转换磁盘为MBR(会丢失所有数据),也可以用一下分区软件“无损”转换。建议你备份所有个人文件转换磁盘。详参:https://www.iruanmi.com/creat-a-bootable-usb-device-and-install-win7-or-win8/或https://www.iruanmi.com/install-win8-win7-vista-2/2、UEFI下U盘启动(建议直接写入镜像安装,如选择PE,需要使用支持UEFI启动的PE),且只允许安装64位系统。详参:https://www.iruanmi.com/get-ready-for-installing/以及https://www.iruanmi.com/install-win7-or-win8-on-uefi-platform/

  6. 我没在BIOS怎么设置,装win7的时候换成了Legacy Boot。然后也没“关闭安全启动,并开启CSM”,不知道是不是这个原因。(因为我是win8就没关注win8换win7)。还有就是我格了C盘还能恢复系统吗,不是有个隐藏的恢复盘吗?

    1. 这些设置在uefi模式下安装64位win7、vista才应该考虑。安全启动是uefi技术规范。格盘重装后一键恢复的配置会丢失。想换回win8自己重装就好,不必留恋预装系统。

  7. 今天帮同学把win8弄成win7 搞了很久,旁边没网,手机查的……之前用光盘弄 发现不能 后来他又准备用gho,结果还是不行但已经格式化了C盘 然后进了高级选项的命令行,用了这个 Diskpart List disk Select disk 0 Clean Convert MBR然后再光盘装 装好了,但再一次启动时貌似找不到引导了bootmsg is missing press ctr+alt+del to restart也不知道怎么回事最后在某PE里面 修复了引导总算是好了 我就是想问问win8换win7有什么注意事项,以后给别人装时方便(主要是他们用win7玩游戏)还有就是win7 到win8 有什么注意事项,是不是装的时候要全格?然后装的时候 自动就建好那几个隐藏分区求解

    1. win8换win7有两种选择:bios(legacy)、uefi。这两种模式下安装教程博客都有。可以看看有那些注意要点。win7到win8和win8到win7没有区别。在同一模式下安装不必转换磁盘重建分区。

  8. 请教个问题哈。我的笔记本上有一个500g硬盘(sda), 一个32g ssd(sdb, gpt分区),我把win8装在了ssd上,启动时应该是从第一个硬盘sda上引导的。我想在500g硬盘上装ubuntu,可是怎么都引导不了,不知应该把bootloader装在哪里。你有什么建议吗,谢谢

    1. 双硬盘引导没有搞过,不好乱讲。 你可以搜下GRUB实现双硬盘引导的相关内容。另外,可能还需要考虑Win8快速启动的影响。

发表评论

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