Legacy和UEFI指的是系统引导方式(Legacy为传统BIOS,UEFI为新式BIOS),MBR和GPT指的是磁盘分区表类型。
一般情况下都是Legacy+MBR, UEFI+GPT这两种组合。但Legacy+GPT,UEFI+MBR也可以实现。
Legacy用的是8086汇编,UEFI 99%以上用C,UEFI的APP和Drives可以用C/C++。
64位的UEFI固件是64位的操作系统(少数二合一平板用32位UEFI固件的可以忽略不计),Legacy是16位的。
Legacy是直接针对底层硬件细节,UEFI通过Firmware-OS Interface、Boot Services、Runtime Services为操作系统和引导器屏蔽了底层硬件的细节。
UEFI可以扩展,大多数硬件加载UEFI的驱动模块就可以完成初始化,驱动模块可以放在固件中,也可以放在设备上,比如显卡的GOP,系统启动就自动加载。UEFI中的每个Table和Protocol都有版本号,可以平滑升级。开发者可以自己根据规范开发UEFI应用程序和驱动程序。
UEFI基于time的异步操作,提高了CPU的效率,减少了等待时间。
UEFI舍弃了中断这种外部设备操作方式,仅保留了时钟中断,操作外部设备采用事件+异步操作,启动的时候按需加载外部设备。
UEFI有个安全启动功能,只有当程序的证书被信任才会被执行。
在UEFI模式下启动,启动的是EFI驱动和应用程序,而且只要系统一启动,就直接是64位的了。(少数二合一平板32位的UEFI固件忽略不计)
那么如果选择UEFI模式启动,所有的16位的MS-DOS实用程序,DOS工具包和其它的维护工具以及32位的应用程序都是无法加载和启动的。UEFI必须安装使用64位系统!
所以在UEFI模式下,我们不能引导32位的系统。
但是呢,在Legacy模式下呢,16位的DOS工具包、32位的程序和系统、64位的都可以OK。
本文只讨论原生UEFI和原生BIOS。
至于带有CSM兼容模块的UEFI本身就是UEFI+BIOS的结合体,自然全兼容没话说。
至于分区表,接下来慢慢说这个事。
硬盘一个逻辑扇区有512个字节,硬盘的第一个扇区,也就是0磁道0柱面1扇区,也就是逻辑扇区0,这个扇区就叫做主引导记录,叫MBR(master boot record)翻译成中文就叫(明(M)白(B)人(R)),就是你得弄明白了。
MBR记录了整块磁盘的重要信息,是计算机开机后访问磁盘时所必须要读取的首个扇区。主要有三个部分:
主引导分区(Master Boot Record,MBR):主要作用是检查分区表是否正确,并且在系统硬件完成自检以后将控制权交给磁盘上的引导程序(如GNU,GRUB)
分区表(partition table):占据64个字节,可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节
结束标志字:0x55AA,最后两个字节,是检验主引导记录是否有效的标志
注:MBR有两个意思,根据语境确定指的是第一个扇区还是主引导分区。
下面这个图就是主引导记录:
引导程序后面4个字节 1B8-1BB 代表windows磁盘签名
1BE-1FD 64个字节是硬盘分区表DPT(Disk Partition Table)
最后的两个字节 1FE-1FF (即55 AA )是MBR的结束标志。
明白为什么MBR分区表最多为什么只能有4个主分区了吧?
因为每个分区信息需要16个字节,所以对于采用MBR型分区结构的磁盘,最多只能识别4个主(primary)或扩展(extend)分区。扩展分区也是主要分区的一种,但它与主分区的不同在于理论上可以划分为无数个逻辑分区。
主分区和扩展分区
磁盘中最多可以有4个Primary和Extended的扇区,而Extended只能有一个,如果要把磁盘分区成四个分区,那么只能是:
P+P+P+P
或者
P+P+P+E
上面的情况中, 3P+E只有三个主分区可用,因为Extended不能被格式化作为数据访问的分区,还需要进一步分区成逻辑分区。如果要四个都可用,就需要分区成4P
扩展分区中逻辑驱动器的引导记录是链式的。每一个逻辑分区都有一个和MBR结构类似的扩展引导记录(EBR),其分区表的第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的EBR,分区表第三、第四项没有用到
需要注意的问题:
主分区和扩展分区最多只有四个
扩展分区最多只能有一个
逻辑分区是由扩展分区持续切割出来的分区
只有主分区和逻辑分区才能被格式化作为数据访问的分区
Linux系统默认将前4个序号作为主分区或扩展分区,而逻辑分区的序号肯定从5开始
下图来自Inside the Linux boot process,较为清晰的画出了MBR中各个部分的结构
GPT分区表位于磁盘的逻辑扇区第2-33号扇区,一共占用32个扇区,能够容纳128 (4*32)个分区表项。每个分区表项大小为128字节,所以Windows系统允许GPT磁盘创建128个主分区。
分区表项中记录着分区的起始,结束地址,分区类型的GUID,分区的名字,分区属性和分区GUID。
所以说除了MBR之外首尾还各需要33个扇区。手动分区的时候要特别注意尾部留空。
GPT分区的第1个扇区,也就是扇区0。
发现什么了?
GPT也有一个类似于MBR的东西,只不过引导记录是空的,windows磁盘签名有,而且分区表也有,只不过分区格式被定义为了EE,因为这个格式不存在,所以老旧的磁盘分区工具打开这个磁盘就会发现无法识别这个磁盘的格式,进而不会对磁盘进行分区操作。
看到这里,我们就已经明白了,所以说其实分区表也就是那么回事,GPT和MBR只不过是两种分配硬盘数据的方式而已。
GPT分区的0扇区可以写入主引导记录,也可以写入分区表,只不过需要手动换算一下。
所以传统Legacy BIOS启动GPT的分区是完全可行的。
而UEFI呢,本身就是读取硬盘的第一个FAT32分区的\efi\boot\bootx64.efi文件来引导系统的,那么无论分区格式是MBR还是GPT,都不会影响UEFI的正常引导。
这就是我们能够成功让传统BIOS启动GPT磁盘的操作系统;让UEFI启动MBR磁盘的操作系统的理论基础。
下面先说说UEFI启动MBR吧,首先MBR分区表一定要有一个FAT32分区,是不是活动分区无所谓,因为UEFI没有活动分区的说法。
只要手动修复一下FAT32分区的BCD文件就行了,用BOOTICE工具编辑一下就OK了。
如果遇到下图的错误,就是BCD的问题:
只要修复一下BCD就行了。下图就是UEFI的BIOS启动的MBR的磁盘
这个很简单,就不在啰嗦了
传统Legacy BIOS启动GPT,这个有点复杂,确实有点复杂……
其实也有几条技术路线可以选择的。
首先我们需求就是要传统Legacy 能启动gpt分区表的大硬盘。这个很繁琐,技术路线有几条,首先Legacy是可以读取主引导记录的440个字节,但是读了以后无法识别分区格式,所以说就要做一个镜像文件 里面包含需要使用的信息。目前我是直接做的扇区编辑,jmp到特定的扇区,用这个扇区的信息来引导到目标的,非常繁琐,这个技术太复杂没法推广。
所以我在研究另一种技术路线,就是模拟uefi的方式,这种方式常见于变色龙,三叶草,clover,duet。这个技术路线相对来讲就简单了。如果你有两块硬盘,一块mbr和另一块gpt,这个就很简单了,从mbr磁盘启动,加载模拟uefi,然后再引导gpt磁盘的系统。
可是如果是单一gpt的磁盘,那还是免不了做扇区编辑,前面留空一段空间,然后把镜像用16进制写进去,再加载到内存,然后运行模拟uefi的程序。这就有点复杂,比如说搞电路的,交流变直流 然后整流 降压 再滤波什么的,费很大劲就为了一个看起来很简单的结果。
【让你的电脑启动速度飞起来!UEFI+GPT与BIOS+MBR真正的区别】
看到很多人都在问UEFI+GPT安装系统的问题,是很多人问哦!其实这个是非常简单的,很多人会装系统,但你要问他是UEFI+GPT还是传统的Legacy+mbr安装的,那么他都会跟你说不知道。因为大部分人根本就搞不清楚这些,它们之前有什么不同,区别在哪里,迷迷糊糊就装好了系统,反正能用就行了呗!
小编今天就来给大家详细的讲讲它们到底有什么区别,并且教大家如何使用这两种模式来安装系统。
1,启动过程的区别
UEFI启动不需要BIOS
从图中可以看出,UEFI启动少了两个环节,一个是BIOS初始化,一个是BIOS自检。那么少了这两个环节,启动速度当然比传统的LEGACY快多了,这也就是为什么都喜欢采用UEFI模式来安装系统了。比如,有时候你的电脑性能明明比别人的高很多,但启动速度就是没有别人的快,现在大家应该知道原因了吧。
2,分区的区别
未分区前
LEGACY启动后,分区时会额外多出一个小分区
未分区前看不出来的
UEFI分区后,会额外多出三个小分区来
不管是UEFI还是LEGACY,分区时都会额外多出小分区。只不过前者是多出三个小分区,而后者只多了一个小分区,所以大家可以现在去看看自己的电脑,以这个来区分,就能知道自己到时是什么模式了。
知识点:
LEGACY启动模式:一般它分的区就是MBR普通分区,它们之间的关系是分不开的,所以我们也可以叫LEGACY+MBR;
UEFI启动模式:一般它分的区就是GPT分区,它们之间的关系也是分不开的,所以我们也叫它UEFI+GPT。
那么问题来了,我们如何知道当前启动是LEGACY还是UEFI呢?
接着往下看
3,启动菜单的区别
这里(--Ti--Mo--LOL)是U盘的品牌名称哦
从上图就能很明显的看出来,第三行和第四行后面都是一样的,都是U盘的品牌名称。只有前面不一样,第三行前面多了一个UEFI:,第四行是只有一个U盘名称的。在这里我要告诉大家的是,第三行和第四行都是U盘启动,这也就是大家经常所说的双启动,说明这个U盘是支持BIOS+UEFI双启动的。
知识点:
电脑启动时,通过启动快捷键可以呼出启动菜单,在启动菜单中就可以很明确的知道哪个是LEGACY启动,哪个是UEFI启动。如果这里选第三行启动,那么就是UEFI启动了,当你在安装界面分区时,你所分的区就是GPT分区;如果你选的是第四行,那么就是LEGACY启动,当你在安装界面分区时,你所分的区就是MBR分区了。
那么有个问题,如果你选择UEFI启动,但你之前硬盘采用的是MBR分区,而不是GPT分区,会出现什么情况呢?
出现的问题:你会无法进行下一步,无法安装系统。
解决方法:1,你把所有的分区全删掉重新分区就行了;2,使用分区转换命令进行转换,然后就可以安装了。
4,硬盘容量支持不同
2TB以上硬盘请使用GPT分区
LEGACY+MBR:最大只支持2000G容量的硬盘,超过2T就不识别了;
UEFI+GPT:支持2000G容量以上的硬盘。(如果你的硬盘容量超过2TB,一定要用GPT分区哦)