Legacy和UEFI指的是系统引导方式(Legacy为传统BIOS,UEFI为新式BIOS),MBR和GPT指的是磁盘分区表类型。
一般情况下都是Legacy+MBR, UEFI+GPT这两种组合。但Legacy+GPT,UEFI+MBR也可以实现。
硬盘一个逻辑扇区有512个字节,硬盘的第一个扇区,也就是0磁道0柱面1扇区,也就是逻辑扇区0,这个扇区就叫做主引导记录,叫MBR(master boot record)翻译成中文就叫(明(M)白(B)人(R)),就是你得弄明白了。
MBR记录了整块磁盘的重要信息,是计算机开机后访问磁盘时所必须要读取的首个扇区。主要有三个部分:
- 主引导记录(Master Boot Record,MBR):占据446个字节,主要作用是检查分区表是否正确,并且在系统硬件完成自检以后将控制权交给磁盘上的引导程序(如GNU,GRUB)
- 分区表(partition table):占据64个字节,可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节
- 结束标志字:0x55AA,最后两个字节,是检验主引导记录是否有效的标志
注: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个主分区。(注:GPT不存在主分区和扩展分区的概念,可以理解为都是主分区。支持几乎无限个分区数量,限制只在于操作系统,如Windows支持最多128个GPT分区。)
分区表项中记录着分区的起始,结束地址,分区类型的GUID,分区的名字,分区属性和分区GUID。
所以说除了MBR之外首尾还各需要33个扇区。手动分区的时候要特别注意尾部留空。

GPT分区的第1个扇区,也就是扇区0。

下面先说说UEFI启动MBR吧,首先MBR分区表一定要有一个FAT32分区,是不是活动分区无所谓,因为UEFI没有活动分区的说法。(注:活动分区是指MBR磁盘上用以启动操作系统的一个主分区,一块硬盘上只能有一个活动分区。GPT磁盘没有活动分区这个概念)
只要手动修复一下FAT32分区的BCD文件就行了,用BOOTICE工具编辑一下就OK了。(注:微软的启动配置数据(BCD)出现于Windows Vista,应用于Windows Vista及以后版本的Windows,类似于Linux下的grub)
如果遇到下图的错误,就是BCD的问题:


参考链接:让传统BIOS启动GPT磁盘的操作系统;让UEFI启动MBR磁盘的操作系统_图那丁吧_百度贴吧
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214542.html原文链接:https://javaforall.net
