http://tieba.baidu.com/p/3754146793
此贴主要介绍3个内容:
1,磁盘分区表格式:MBR、GPT
2,BIOS引导模式:Legacy BIOS、UEFI BIOS
3,引导修复方法:NTBOOTAutofix工具修复、BOOTICE工具修复
一、磁盘分区表格式
一般来说,磁盘分区表有两种格式:MBR和GPT
MBR分区表在windows操作系统下最多支持4个主分区或3个主分区+1个扩展分区(包含多个逻辑分区),扩展分区必须划分为逻辑分区才能使用,1个扩展分区可以划分多个逻辑分区
MBR分区表不支持容量大于2.2TB的分区(一些硬盘制造商将他们的容量较大的磁盘升级到了4KB的扇区,这意味着MBR的有效容量上限提升到了16 TB)
如下图是一个MBR分区表示例:1个主分区+1个扩展分区(划分了3个逻辑分区)
GPT分区表对分区数量没有限制,但在windows系统上最多可以支持128个主分区
GPT分区表突破了MBR最大支持2.2T分区的限制,貌似最大支持18EB的分区
如下图是一个GPT分区表示例:划分了7个主分区
二、BIOS引导方式
目前主要的系统引导方式也有两种:传统的LegacyBIOS和新型的UEFI BIOS
一般来说,有如下两种引导+磁盘分区表组合方式:LegacyBIOS+MBR和UEFI BIOS+GPT
Legacy BIOS无法识别GPT分区表格式,所以也就没有LegacyBIOS+GPT组合方式;
UEFI BIOS可同时识别MBR分区和GPT分区,所以UEFI下,MBR和GPT磁盘都可用于启动操作系统。不过由于微软限制,UEFI下使用Windows安装程序安装操作系统是只能将系统安装在GPT磁盘中。
再来说说传统Legacy BIOS和新型UEFI BIOS引导方式的工作原理吧:
Legacy BIOS
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LegacyBIOS→MBR→“活动的主分区”→\bootmgr→\Boot\BCD→\Windows\system32\winload.exe
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
传统Legacy BIOS引导windows操作系统时,是通过一个活动的主分区下的bootmgr(启动管理器)文件导入根目录下boot文件夹里的BCD(启动设置数据)文件,然后BCD文件根据自身的配置内容加载系统启动文件winload.exe(位置:根目录\Windows\system32\winload.exe)来启动系统。
一个BCD文件可以加载多个系统启动文件从而实现引导多个系统的启动
通过EasyBCD工具看以看到BCD文件的内容,如下是我的win8.1和win10两个系统的BCD内容:
我的windows 8.1在C盘,winload.exe位置:C: \Windows\system32\winload.exe
我的window 10在G盘,winload位置:G: \Windows\system32\winload.exe
通过BCD来加载不同位置的winload.exe来实现这两个系统的启动
通过引导修复工具NTBOOT Autofix查看BCD文件内容,如下图:
需要注意的是:MBR磁盘格式下,windows系统的启动文件(bootmgr、BCD)必须
存放在活动的主分区内,这样才能正常引导系统启动(MBR磁盘分区格式下,只允许有一个分区是活动的)。
如果是使用微软原版操作系统按照windows安装程序来进行系统安装,系统会自动创建一个隐藏的活动主分区(win7貌似是100M,win8貌似是350M)用来存放启动文件;
如果采用其他安装方式来安装系统,由于系统默认并不会自动创建这个活动的主分区,启动文件将会存放我们的系统盘里,所以我们在采用其它安装方式安装第一个系统时,需要确保安装系统的分区是活动的、而且是主分区,而安装第二个、第三个…系统时,就不必要求必须是主分区了,逻辑分区也可以,因为安装第二个、第三个…系统时,我们已经有了一个活动的主分区了(第一个系统所在的分区),这个活动的主分区下的BCD文件里已经包含了我们的第二个、第三个…系统的启动信息用来启动第二个、第三个…系统。
UEFI BIOS
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
UEFIBIOS→EFI系统分区(FAT格式的分区)→\efi\Microsoft\boot\bootmgfw.efi→efi\Microsoft\boot\BCD→\Windows\system32\winload.efi
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
UEFI BIOS引导windows系统时,是通过一个FAT格式分区下的bootmgfw.efi文件来导入BCD文件,然后BCD文件根据自身的配置内容加载系统引导文件winload.efi
(对比legacy引导发现,UEFI的引导文件为winload.efi,而Legacy的引导文件为winload.exe)
需要注意的是:GPT磁盘格式下,windows系统的启动文件(bootmgfw.efi、BCD)是存放在一个FAT格式的分区里的,有些出厂预装win8系统的电脑下将该FAT分区称之为ESP分区或EFI分区
如下图,ESP和EFI分区一般都是隐藏的FAT分区,可以通过DG分区工具来创建ESP分区,还可以用DG为该分区添加盘符让其在资源管理器下显现出来
可见,UEFI+GPT模式引导windows系统时,并不需要mbr主引导记录,也不需要活动分区,只需要你一个存放了引导启动文件的fat格式分区就可以了,这个fat分区当然也可以是U盘等外接USB设备了。
就目前情况而言,GPT分区表磁盘不支持32位的win7以及win7之前的系统,支持64位的XP、win7、win8、win10和32位的win8、win10。一般地,GPT磁盘多与64位windows系统组合搭配。
三、引导修复教程
再来说说引导丢失、损坏导致系统无法正常进入情况下,如何通过修复引导来使系统正常启动。
引导问题故障举例:
常见的引导丢失、损坏情况说明如下:
上图,Winload.exe文件有问题,可见是Legacy BIOS引导文件出错;如果此处是winload.efi,则应推测是UEFI BIOS引导文件出错。