主板程序(BIOS / UEFI),磁盘分区类型(MBR / GPT)简介

1. 主板内置程序:

BIOS(Basic Input Output System): 基本输入输出系统。
UEFI(Unified Extensible Firmware Interface): 统一可扩展固件接口,用于替换BIOS的新式程序。

1.1 作用

这两个主板内置程序作用上都差不多,无非就是初始化硬件,检测硬件信息,然后引导硬盘上的系统运行。

1.2 对比

说几点对用户比较有用的对比点
(1) 流程:
BIOS:

上电自检
初始化硬件
加载MBR...
系统启动引导代码
启动系统内核
系统启动完成

UEFI:

上电自检
初始化硬件
加载UEFI固件
启动UEFI应用
启动系统内核
系统启动完成

(2) 搭配的分区类型:
BIOS:可以正常使用分区类型为MBR的磁盘
UEFI:可以正常使用分区类型为GPT的磁盘

(3) 速度与灵活性:
BIOS:传统的BIOS程序运行起来比较傻瓜,它基本上只能管理硬件部分的东西,不会和系统有什么交互。
UEFI:较传统的BIOS启动更快了,传统的BIOS不能存储硬件信息,每次上电后都要给这些硬件重新分配资源;而UEFI可以存储配置信息,硬件没有更换的前提下每次上电后只要按照配置信息分配资源即可。对于比较复杂的设备,UEFI也可以让硬件本身存储自己的配置信息,并且提供API与操作系统协同初始化此硬件,加快了系统的运行。

2. 磁盘分区

磁盘分区有两种类型,MBR和GPT。

2.1 MBR类型分区结构

MBR(Master Boot Record): 主引导记录
在这里插入图片描述
● 主引导程序(MBR): BIOS初始化完成后,会加载磁盘0号扇区的主引导程序到内存中运行。而此处的主引导程序会查找活动分区,并将活动分区中的引导程序(一般占一个扇区大小,即512字节)加载到内存中运行,然后再跳转到真正能引导操作系统的程序引导(如下图的bootloader或者GRUB2等)windows内核程序运行。

第一阶段引导
第二阶段引导
主引导程序
活动分区中的引导程序
bootloader / GRUB2等
操作系统内核

BootLoader:用于引导windows vista,7,8,10
GRUB2:用于引导linux的操作系统

● 分区表(DPT): MBR格式的磁盘只有四个分区表,每个分区表大小占16字节,并对应磁盘中的某一个主分区。因为只有四个主分区表,所以MBR类型分区的磁盘只能有四个主分区,想要更多分区只能将其中的一个主分区变为扩展分区(一个磁盘最多只有一个扩展分区),然后扩展分区可以分出来若干个逻辑分区。

字节位 内容及含义
0x000 若为80H,代表此分区为活动分区;若为00H,则代表非活动分区。一个磁盘只能有一个活动分区,活动分区一般存放操作系统
0x001~0x003 此分区第一个扇区的地址(磁头号,柱面号,扇区号)
0x004 此分区类型
00H:此分区未使用
05H:扩展分区
06H:FAT16类型
07H:NTFS类型
0BH:FAT32类型
0x005~0x007 此分区的最后一个扇区的地址(磁头号,柱面号,扇区号)
0x008~0x011 四个字节表示此分区之前的总扇区数,所以每个分区之前的总容量最大为:2^32 * 512 = 2TB
0x012~0x015 四个字节表示此分区的总扇区数,所以每个分区最大容量:2^32 * 512 = 2TB

结合8 ~ 11位12 ~ 15位可知,理论上MBR分区只支持最大容量4TB的磁盘。而实际情况下,windows系统在分区管理中只能分出来最大2TB的容量,要想分出来4TB,就需要使用第三方工具来分区(但是不建议这么干,否则后果自负)

● 结尾标志: 占两个字节,分别为0x55和0xAA,如果不是这两个值,BIOS会认为此磁盘不能被正确引导,BIOS会继续检查磁盘列表中的下一个磁盘。如果所有的磁盘都是无效的,就会报引导类错误。

上边整个第一扇区对应下图红框内容:
在这里插入图片描述
注:上图查看磁盘字节数据的工具名为 winhex

2.2 GPT类型分区结构

GPT(GUID Partition Table): 全局唯一标识磁盘分区表
在这里插入图片描述

● [LBA0] 保护性MBR(Protective MBR): 占一个扇区大小,格式与正常的MBR分区一致,但是除了结尾标志还是0x55和0xAA外,其余大部分都为0。在只有GPT分区的磁盘上,这部分只是为了以前的MBR磁盘工具可以正确识别磁盘,防止误操作造成磁盘损坏。
在这里插入图片描述

● [LBA1] GPT头(Primary GPT Header): 占一个扇区大小,其中具体含义见下表

字节位 字节数 内容及含义
0x200~0x207 8 GPT头的签名,通过ascii码转换译为EFI PART
0x208~0x20B 4 版本号
0x20C~0x20F 4 GPT头中有意义数据所占大小,一般就是92字节,剩下的420字节全部填充0
0x210~0x213 4 GPT头的CRC校验和
0x214~0x217 4 必须是“00 00 00 00”
0x218~0x21F 8 GPT头的起始扇区号
0x220~0x227 8 GPT头备份扇区号,如上图所示,一般就是最后一个扇区
0x228~0x22F 8 可进行分区的起始扇区号(LBA34)
0x230~0x237 8 可进行分区的结束扇区号(倒数第34个扇区)
0x238~0x247 16 磁盘的GUID(类UNIX系统中也叫UUID)
0x248~0x24F 8 分区表的起始扇区号(LBA2)
0x250~0x253 4 分区表的总数,因windows系统限定其最大为128,所以理论上windows最大可分出来128个分区
0x254~0x257 4 每个分区表所占用的字节数,通常为128bytes
0x258~0x25B 4 所有分区表的CRC校验和
0x25C~0x3FF 420 保留位,全部为0

在这里插入图片描述

● [LBA2~LBA33] 分区表: 每个分区表项固定占用128 bytes,又因为windows可支持最大分区数为128个,所以装有windows系统的磁盘上,整个分区表项占用字节数为 = 128 bytes * 128 = 16384 bytes = 32个LBA大小。每个分区表项格式如下表(以第一个分区表项举例)

字节位 字节数 内容及含义
0x400~0x40F 16 该分区类型,GUID表示
0x410~0x41F 16 该分区唯一标识符,GUID表示
0x420~0x427 8 该分区起始扇区,单位:LBA
0x428~0x42F 8 该分区结束扇区,单位:LBA
0x430~0x437 8 该分区属性标志
0x438~0x47F 72 该分区的分区名称,最大为32字符,通常这些字符的编码方式为UTF-16

分区属性见下表(8个字节=8*8bit=64bit):

比特位 内容及含义
0 系统分区(磁盘分区工具必须将此分区保持原样,不得做任何修改)
1 EFI隐藏分区(EFI不可见分区)
2 传统BIOS的可引导分区标志
60 只读
62 隐藏
63 不自动挂载,也就是不自动分配盘符

分区类型见下表:

操作系统 GUID(小端字节序) 内容及含义
None 00000000-0000-0000-0000-000000000000 未使用
None 024DEE41-33E7-11D3-9D69-0008C781F39F MBR分区表
None C12A7328-F81F-11D2-BA4B-00A0C93EC93B EFI系统分区
None 21686148-6449-6E6F-744E-656564454649 BIOS引导分区
None D3BFE2DE-3DAF-11DF-BA40-E3A556D89593 Intel Fast Flash (iFFS) partition (for Intel Rapid Start technology)
Windows E3C9E316-0B5C-4DB8-817D-F92DF00215AE 微软保留分区
Windows EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 基本数据分区
Windows DE94BBA4-06D1-4D40-A16A-BFD50179D6AC Windows恢复环境
Linux 0FC63DAF-8483-4772-8E79-3D69D8477DE4 数据分区。Linux曾经使用和Windows基本数据分区相同的GUID。这个新的GUID是由GPT fdisk和GUID Parted开发者根据Linux传统的"8300"分区代码发明的。
Linux A19D880F-05FC-4D3B-A006-743F0F84911E RAID分区
Linux 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F 交换分区
Linux E6D6D379-F507-44C2-A23C-238F2A3DF928 逻辑卷管理器(LVM)分区
Linux 8DA63339-0007-60C0-C436-083AC8230908 保留

下面是三种类型的分区表,分别对应上面分区类型表中红,蓝,黑字体的分区类型
在这里插入图片描述

3. 总结

UEFI+GPT的方案因为它不限制磁盘容量,运行速度等方面优点,让传统的BIOS+MBR方案渐渐淡出了市场。所以建议大家如果安装支持UEFI+GPT系统的时候,可以优先考虑UEFI+GPT的方案。

猜你喜欢

转载自blog.csdn.net/In_engineer/article/details/123523455