Legacy和UEFI,MBR和GPT的区别

article/2025/9/25 6:19:59

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记录了整块磁盘的重要信息,是计算机开机后访问磁盘时所必须要读取的首个扇区。主要有三个部分:

  1. 主引导记录(Master Boot Record,MBR):占据446个字节,主要作用是检查分区表是否正确,并且在系统硬件完成自检以后将控制权交给磁盘上的引导程序(如GNU,GRUB)
  2. 分区表(partition table):占据64个字节,可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节
  3. 结束标志字: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,分区表第三、第四项没有用到

需要注意的问题:

  1. 主分区和扩展分区最多只有四个
  2. 扩展分区最多只能有一个
  3. 逻辑分区是由扩展分区持续切割出来的分区
  4. 只有主分区和逻辑分区才能被格式化作为数据访问的分区
  5. Linux系统默认将前4个序号作为主分区或扩展分区,而逻辑分区的序号肯定从5开始

下图来自Inside the Linux boot process,较为清晰的画出了MBR中各个部分的结构

MBR

GPT分区表位于磁盘的逻辑扇区第2-33号扇区,一共占用32个扇区,能够容纳128 (4*32)个分区表项。每个分区表项大小为128字节,所以Windows系统允许GPT磁盘创建128个主分区。(注:GPT不存在主分区和扩展分区的概念,可以理解为都是主分区。支持几乎无限个分区数量,限制只在于操作系统,如Windows支持最多128个GPT分区。)
分区表项中记录着分区的起始,结束地址,分区类型的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没有活动分区的说法。(注:活动分区是指MBR磁盘上用以启动操作系统的一个主分区,一块硬盘上只能有一个活动分区。GPT磁盘没有活动分区这个概念
只要手动修复一下FAT32分区的BCD文件就行了,用BOOTICE工具编辑一下就OK了。(注:微软的启动配置数据(BCD)出现于Windows Vista,应用于Windows Vista及以后版本的Windows,类似于Linux下的grub)
如果遇到下图的错误,就是BCD的问题:

只要修复一下BCD就行了。下图就是UEFI的BIOS启动的MBR的磁盘
这个很简单,就不在啰嗦了

传统Legacy BIOS启动GPT,这个有点复杂,确实有点复杂……
其实也有几条技术路线可以选择的。
首先我们需求就是要传统Legacy 能启动gpt分区表的大硬盘。这个很繁琐,技术路线有几条,首先Legacy是可以读取主引导记录的440个字节,但是读了以后无法识别分区格式,所以说就要做一个镜像文件 里面包含需要使用的信息。目前我是直接做的扇区编辑,jmp到特定的扇区,用这个扇区的信息来引导到目标的,非常繁琐,这个技术太复杂没法推广。

所以我在研究另一种技术路线,就是模拟uefi的方式,这种方式常见于变色龙,三叶草,clover,duet。这个技术路线相对来讲就简单了。如果你有两块硬盘,一块mbr和另一块gpt,这个就很简单了,从mbr磁盘启动,加载模拟uefi,然后再引导gpt磁盘的系统。

可是如果是单一gpt的磁盘,那还是免不了做扇区编辑,前面留空一段空间,然后把镜像用16进制写进去,再加载到内存,然后运行模拟uefi的程序。这就有点复杂,比如说搞电路的,交流变直流 然后整流 降压 再滤波什么的,费很大劲就为了一个看起来很简单的结果。

参考链接:让传统BIOS启动GPT磁盘的操作系统;让UEFI启动MBR磁盘的操作系统_图那丁吧_百度贴吧


http://chatgpt.dhexx.cn/article/SwJRvAXn.shtml

相关文章

BIOS修改mbr为gpt的步骤

之前传统的硬盘分区模式都是mbr,但是现在的win10系统硬件不断扩容,传统分区模式已经不能满足了,所以我们就可以将硬盘mbr改成gpt,那么要如何操作呢?其实方法也不难,针对这个问题,下文小编给大家…

MBR和GPT分区区别

MBR分区和GPT分区区别 总结:UEFI是新式的BIOS,legacy是传统BIOS。你在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果你是在Legacy模式下安装的系统,也只能在legacy模式下进系统。UEFI只支持64为系统…

详解MBR与GPT分区

1 MBR分区 MBR是Master Boot Record的缩写,是一种旧的分区表格式,用于在硬盘上标识和管理分区。MBR分区表可以标识最多4个主分区或3个主分区和1个扩展分区。 2TB的限制是指,使用MBR分区表格式的硬盘最大只能分区到2TB,因为MBR使…

不支持打开非业务域名htts:....请重新配置

最近做小程序加载html 出现的提示 自己的处理方法是点击右上角的详情 勾选即可

fiddler 抓取 htts 失败

1.清除C:\Users\Administrator\AppData\Roaming\Microsoft\Crypto\RSA 目录下所有文件(首次安装fiddler请忽略) 2.清除电脑上的根证书,WINR快捷键,输入:certmgr.msc, 然后回车,查找所有fiddler证…

Spring cloud Gateway HTTS配置

在Web服务应用中,为了数据的传输安全,使用安全证书,使用TLS/SSL加密。这里就介绍一下Spring Cloud Gateway的HTTPS配置。 7.1 TLS/ SSL配置 TLS:安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性…

漫画:htts是如何保证一台主机把数据安全发给另一台主机

通过漫画的形式由浅入深带你读懂htts是如何保证一台主机把数据安全发给另一台主机的 对称加密 一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥…

给网站配置免费的HTTS证书

最近看到网上说 https 的网站 Google 会优先收录,所以就抽时间记录下配置博客的过程。 ACME 使用 LetEncrypt 证书作为博客的 https 实现方式。 acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书. github https://github.com/Neilpang/acme.sh 主要步骤…

htts ca 制作

https://www.cnblogs.com/gsls200808/p/4502044.html rm -rf /etc/pki/CA/*.old touch /etc/pki/CA/index.txt echo 01 > /etc/pki/CA/serial echo 02 > /etc/pki/CA/serial rm -rf keys mkdir keys 生成根CA并自签(Common Name填RootCA) openssl genrsa -des3 -out ke…

阿里云服务器nginx配置ssl步骤htts

阿里云服务器中要配置ssl 1.先在服务器安装nginx,安装步骤自行搜索,很多。 2.获取ssl证书,可以参考https://mp.csdn.net/console/editor/html/87912845这篇文章,里面有阿里云的免费证书获取方式。 3.安装好以后打开nginx配置文件。 在里面…

Spring Boot 配置 Https 自己生成htts证书

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/u012702547/article/details/99405309 https 现在已经越来越普及了,特别是做一些小程…

Git 的HTTS和SSH方式的区别和使用

文章目录 前言HTTPS协议模式SSH 协议模式1.确认自己电脑是否拥有SSH密钥:2.生成 SSH 密钥3.将SSH密钥添加到服务器4.利用SSH密钥推送 参考链接: 前言 Git 有两种远程仓库与本地仓库之间 push/clone/pull 等操作的验证模式。一种是 HTTPS 模式&#xff0…

TCP / IP 协议族和HTTS

TCP / IP 协议族 概念 一系列协议所组成一个网络分层模型 为什么要分层? 因为网络的不稳定性 如果我们传一个50M的数据,如果失败,每次都将需要重新传50M,但我们把它分成多块,失败时候只需重新传输失败的那一块。 具…

htts 原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。 HTTPS简介 HTTPS其实是有两部分组成:HTTP SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和…

charles抓htts包总结

参考:Charles问题之抓Android手机应用Https包,出现Unknown - 简书 (jianshu.com)Charles问题之Windows10下抓取https包,出现unknown - 简书 (jianshu.com) 一、安装charles root证书 二、在浏览器安装证书(用以电脑浏览器抓https) 三、手机抓…

htts加密过程

文章目录 HTTPS 什么是HTTPS什么是‘加密’ 加密的方式有哪些 对称加密非对称加密 总结HTTPS传输过程 什么是HTTPS HTTPS与HTTP一样都是应用层协议,与HTTP不同的是:HTTP的协议内容都是按照文本方式进行明文传输的,这导致在传输过程第三方者…

HTTS 为什么更安全?

本文已收录于专栏 ⭐️ 《计算机网络》⭐️ 学习指南: HTTPS引入SSL协议加密方式摘要算法数字证书 SSL/TLS握手经典面试题HTTP 与 HTTPS 区别?HTTPS 目前有哪些不足? 完结散花参考文献 HTTPS 引入 HTTP 最凸出的优点是「简单、灵活和易于扩…

HTTPS安全通信基础

导读HTTPS协议提供了较为完善的方案,HTTPS不是一种新协议,是通过HTTP结合SSL/TSL实现了通信安全。但是HTTPS也有其缺点,所以要结合具体场景情况合理地使用才能发挥HTTPS的强大作用。 HTTP是一个优秀的通信协议,不过事物皆具有双面…

HTTP协议与HTTPS协议的介绍与区别

目录 1. HTTP协议的介绍: 2. HTTP工作原理: 3.HTTP三点注意事项: 4.HTTP请求和响应的格式: 5.HTTPS协议的简单介绍: 6.HTTPS的作用: 7.HTTS方式与Web服务器通信的步骤: 8.HTTP与HTTPS的区别&#xf…

HTTS基础知识

简介 HTTPS 指的是超文本传输安全协议(Hypertext Transfer Protocol Secure)。简单的理解,HTTPS 就是将 HTTP 中的传输内容进行了加密,然后通过可靠的连接,传输到对方的机器上。加密的协议是 TLS,其前身是 SSL&#x…