从Intel 6系列主板之后,就开始提供UEFI BIOS支持,正式支持GPT硬盘分区表,一举取代了此前的MBR分区表格式,不过为了保持对老平台的兼容,微软即使最新的Windows 10系统也继续提供了对MBR分区表格式的支持。
 
MBR和GPT分区表详解
全新硬盘(未初始化)装系统之前,必须对齐进行分区,硬盘分区初始化的格式包括MBR和GPT两种。当然对于基于PowerPC的Mac电脑还有专门的Apple分区图,在这里就不做介绍。
 

 
MBR的全称是Master Boot Record(主引导记录),MBR早在1983年IBM PC DOS 2.0中就已经提出。之所以叫“主引导记录”,是因为它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。
 
主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序;第二部分是Partition table区(DPT分区表),占64个字节;第三部分是Magic number,占2个字节。
 

 
MBR分区表系统
所谓启动加载器,是一小段代码,用于加载驱动器上其他分区上更大的加载器。如果你安装了Windows,Windows启动加载器的初始信息就放在这个区域里——如果MBR的信息被覆盖导致Windows不能启动,你就需要使用Windows的MBR修复功能来使其恢复正常。如果你安装了Linux,则位于MBR里的通常会是GRUB加载器。
 
分区表偏移地址为01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4,分别对应MBR的四个主分区。
Magic number也就是结束标志字,偏移地址01FE--01FF的2个字节,固定为55AA,如果该标志错误系统就不能启动。
 

 
MBR最大支持2.2TB磁盘,它无法处理大于2.2TB容量的磁盘。MBR还只支持最多4个主分区——如果你想要更多分区,你需要创建所谓“扩展分区”,并在其中创建逻辑分区。
 
GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,它的推出是和UEFI BIOS相辅相成的,鉴于MBR的磁盘容量和分区数量已经不能满足硬件发展的需求,GPT首要的任务就是突破了2.2T分区的限制,最大支持18EB的分区。
 

 
GPT分区表系统
 
而在分区数量上,GPT会为每一个分区分配一个全局唯一的标识符,理论上GPT支持无限个磁盘分区,不过在Windows系统上由于系统的限制,最多只能支持128个磁盘分区,基本可以满足所有用户的存储需求。在每一个分区上,这个标识符是一个随机生成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。
 

 
而在安全性方面,GPT分区表也进行了全方位改进。在早期的MBR磁盘上,分区和启动信息是保存在一起的。如果这部分数据被覆盖或破坏,事情就麻烦了。相对的,GPT在整个磁盘上保存多个这部分信息的副本,因此它更为健壮,并可以恢复被破坏的这部分信息。GPT还为这些信息保存了循环冗余校验码(CRC)以保证其完整和正确——如果数据被破坏,GPT会发觉这些破坏,并从磁盘上的其他地方进行恢复。
 
小结:所以对于新平台用户(Intel 6系以后/AMD 900系列以后和A系列)来说,都强烈推荐使用GPT分区表格式,目前包括Windows Vista、7、8、8.1、10已经都支持读取和使用GPT分区表。而对于使用Windows 8、8.1、10的用户,换用GPT后开机启动速度也可以进一步得到显著提升。
 
UEFI BIOS详解
 
UEFI的全称是Unified Extensible Firmware Interface,意即统一可扩展固件接口,它是基于EFI 1.10标准为基础发展而来,值得注意的是在UEFI正式确立之前,Intel就开始积极推进传统BIOS的升级方案,并最终确立了过渡方案EFI标准,直到2007年Intel将EFI标准的改进与完善工作交给Unified EFI Form进行全权负责,EFI标准则正式更名为UEFI。
 

 
传统BIOS界面
相比传统BIOS,UEFI最大的几个区别在于:
1、编码99%都是由C语言完成;
2、一改之前的中断、硬件端口操作的方法,而采用了Driver/protocol的新方式;
3、将不支持X86实模式,而直接采用Flat mode(也就是不能用DOS了,现在有些 EFI 或 UEFI 能用是因为做了兼容,但实际上这部分不属于UEFI的定义了);
4、输出也不再是单纯的二进制code,改为Removable Binary Drivers;
5、OS启动不再是调用Int19,而是直接利用protocol/device Path;
6、对于第三方的开发,前者基本上做不到,除非参与BIOS的设计,但是还要受到ROM的大小限制,而后者就便利多了。
7、弥补BIOS对新硬件的支持不足的问题。
 
UEFI和GPT是相辅相成的,二者缺一不可,要想使用GPT分区表则必须是UEFI BIOS环境。UEFI于用户而言最典型的特征就是使用了图形化界面,虽然还未达到操作系统界面的图形交互功能,但人性化的界面、鼠标的操作,已经将BIOS变得非常易用,对于不少电脑初级用户来说也可以很好的查看和设置BIOS的相关选项和功能。 
 

 
UEFI BIOS界面
除了图形化界面,UEFI相比传统BIOS,还提供了文件系统的支持,它能够直接读取FAT、FAT32分区中的文件,例如华硕、华擎等主板在UEFI BIOS环境下更新BIOS就可以直接读取U盘中的BIOS及其他文件,另外新的UEFI主板基本都提供了截屏功能,这些截屏图片都可以存储在U盘当中。
UEFI还有一个重要特性就是在UEFI下运行应用程序,这类程序文件通常以efi结尾。利用UEFI可以直接识别FAT分区中的文件,又有可直接在其中运行应用程序。我们就可以将Windows安装程序做成efi类型应用程序,然后把它放到任意FATA分区中直接运行即可。
 

 
UEFI启动顺序
UEFI的模块化设计,它在逻辑上分为硬件控制与OS(操作系统)软件管理两部分,硬件控制为所有UEFI版本所共有,而OS软件管理其实是一个可编程的开放接口。借助这个接口,主板厂商可以实现各种丰富的功能。比如我们熟悉的各种备份及诊断功能可通过UEFI加以实现,主板或固件厂商可以将它们作为自身产品的一大卖点。UEFI也提供了强大的联网功能,其他用户可以对你的主机进行可靠的远程故障诊断,而这一切并不需要进入操作系统。
当然由于UEFI主要由高级语言编写(C语言),相比于传统BIOS的汇编语言,UEFI BIOS在安全防护性方面相比传统BIOS要弱,比较容易遭到病毒的攻击,安全性有待进一步提升。不过在图形化界面、应用程序扩展面前,UEFI BIOS还是非常成功的。
 
One More Thing...
 
聊完了MBR/GPT分区表和UEFI BIOS,下面我们就来介绍下UEFI下安装Windows系统,上面已经讲到UEFI和GPT是相辅相成的,如果使用UEFI模式安装Windows系统,那么硬盘分区表必须是GPT。
 

 
备注:主板为了兼容MBR分区表,一般会提供Legacy BIOS和UEFI BIOS启动模式选项,如果要使用UEFI模式安装Windows,就必须开启UEFI启动模式。
 

 
目前64bit Windows Vista、7、8、8.1、10都已经支持GPT分区表,而Windows 8、8.1、10都已经原生支持UEFI,安装这些系统的时候:只要硬盘设置为GPT分区表 主板设置为UEFI启动后,就可以直接开始安装操作系统了。
 

 
而对于Windows Vista、7系统,就需要手动添加UEFI支持,我们可以找一份Windows 8或者10安装镜像,从安装文件中提取Bootmgfw.efi文件,重命名为BOOTX64.EFI,拷贝到win7安装文件的\EFI\Boot\下,如果没有BOOT文件夹就新建一个。
 
至此UEFI模式安装Windows系统告一段落,如果大家还有什么疑问,欢迎大家在下面评论中提出宝贵的意见。

[转帖]MBR与UEFI的更多相关文章

  1. BIOS、MBR、UEFI和GPT关系

    很多用户在新买电脑,或是给已有电脑重装系统时都出现过怎么都无法引导U盘安装的情况.究其原因,还是没能搞清楚BIOS.MBR.UEFI和GPT的复杂关系.所以,今天小编就和大家分享一下它们之间的爱恨情仇 ...

  2. 叙Windows平台下基于MBR和UEFI的bootkit(一)--以MBR为例

    安全的对抗首先在权限方面,权限高的进程对权限低的权限就是就是降维打击,无往不利.当权限相同时,启动得早便为王.所谓的bootkit也就是基于这个思路设计的一种复杂病毒.它优先于Windows系统启动, ...

  3. win7 64 + Ubuntu 14.04.1 64双系统安装,详解UEFI ~ GPT和legacy ~ MBR区别

    win7 64 + Ubuntu 14.04.1 64双系统安装 背景:我的笔记本之前的系统是window 7 64 + Ubuntu 14.04.1,用UEFI引导系统.安装过程是先装的win7,再 ...

  4. 装系统 ---------- 了解 UEFI与Legacy、硬盘分区MBR和GPT

    UEFI:全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface),一种详细描述类型接口的标准.这种接口用于操作系统自动从预启动的操作环境,加载到一种 ...

  5. Legacy和UEFI,MBR和GPT的区别

    Legacy(历史的,遗留的,传统的)和UEFI指的是系统引导方式(Legacy为传统BIOS,UEFI为新式BIOS),MBR和GPT指的是磁盘分区表类型. 一般情况下都是Legacy+MBR, U ...

  6. UEFI启动视频详解:启动分析+N项操作实例

    ============================================================= ※※※※最给力的视频解说※※※※ 2011hiboy全部共享资料:立刻去   ...

  7. UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究

    内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...

  8. (转载)uefi启动解析:由原理到实例

    这是本文的全部内容:A:什么是UEFI,其含义B:UEFI模块包含的文件逐个分析及其引导流程+ESP分区的本质C:判断自己的机器是X64(64 bit)构架还是IA32(32 bit)的构架D:给传统 ...

  9. MBR和GPT分区

    MBR是传统的分区表类型,最大缺点是不支持容量大于2T的硬盘.GPT则弥补了MBR这个缺点,最大支持18EB的硬盘,是基于UEFI使用的磁盘分区架构. 其中,目前所有的Windows系统均支持MBR, ...

随机推荐

  1. 使用Python代码处理Excel

    转载说明: 原文地址:http://my.oschina.net/alazyer/blog/223354 原文有十处左右的错误,修正后转载于此. 经验证,python 3.4.3下可用.请各位朋友明察 ...

  2. 【转载】COM 组件设计与应用(十四)——事件和通知(vc.net)

    原文:http://vckbase.com/index.php/wv/1244.html 一.前言 我的 COM 组件运行时产生一个窗口,当用户双击该窗口的时候,我需要通知调用者: 我的 COM 组件 ...

  3. CF 1117 E. Decypher the String

    E. Decypher the String 链接 题意: 有一个字符串,一些操作,每次操作交换两个位置的字符,经过这些操作后,会得到新的字符串.给你新的字符串,求原来的串.可以有3次询问,每次询问给 ...

  4. CF 1093 G. Multidimensional Queries

    G. Multidimensional Queries 链接 分析: 考虑如何去掉绝对值符号. $\sum \limits_{i = 1}^{k} |a_{x, i} - a_{y, i}|$,由于k ...

  5. [PLC]ST语言六:DI/EI/FEND/WDT/FOR/NEXT

    一:DI/EI/FEND/WDT/FOR/NEXT 说明:简单的顺控指令不做其他说明. 控制要求:无 编程梯形图: 结构化编程ST语言:

  6. 自动化工具 fastmonkey

    Android Monkey 二次开发,实现高速点击的 Android Monkey 一.工具介绍: 1.本工具是testhome上 zhangzhao_lenovo开源出来的工具,源码暂时还未开源: ...

  7. 使用python实现解析二元一次方程

    二元一次函数的实现 import cmathimport mathimport sys 这里导入cmath包是在后面用来处理复数的情况导入math使用来处理 平方 根号等的运算而导入sys的意义是为了 ...

  8. java.io.tmpdir指定的路径在哪?

    Java.io.tmpdir介绍 System.getproperty(“java.io.tmpdir”)是获取操作系统缓存的临时目录,不同操作系统的缓存临时目录不一样, 在Windows的缓存目录为 ...

  9. ats 转发代理

    ats是一个通用代理,可配置为反向和转发代理; 转发代理可以用作基础架构中的中央工具来访问web, 它可以与缓存结合使用以降低 总体带宽使用率.转发代理充当本地网络上的客户端浏览器与这些客户端访问的所 ...

  10. C++指定位数小数输出

    关键词:头文件<iomanip>,指令setw(x),fixed,setprecision(x). setw()这个指令也可以配合setfill('')用于对齐输出,详情见另一篇博客htt ...