BIOS 自检完成之后,将MBR 的代码读入内存,管理权交给 MBR ,MBR再读取 DPT,从DPT (Disk Partition Table,硬盘分区表占据 MBR 扇区的64个字节(偏移01BEH--偏移01FDH))找出硬盘的所有分区哪一个是激活的主分区。到这里为止,所有系统都是一样的。下面就有区别了。 DPT读完找到主分区之后然后找到这个主分区的PBR(Partition Boot Record分区引导记录),PBR位于激活主分区的第一个扇区。安装不同操作系统的时候 PBR 是会被改变的, XP 的PBR 写死的代码是去找 NTLDR 。而Vista 和7的PBR 里写进的就是去找 Bootmgr 。
这个时候显示器上还没有显示引导管理器的界面。 Bootmgr 被找到之后管理权就交到了 Bootmgr。 Boot Manager 首先从 BCD 中读取 Boot Manager 菜单的语言版本信息,然后再调用 BOOTMGR 与相应语言的 BOOTMGR.EXE.MUI 组成相应语言的启动菜单,之后才会在显示器上显示引导管理器,也就是选择多操作系统的那个文字界面。最后,当你选择了相应的操作系统,这里是 Win7 或8(如果选择 XP, 会转入 XP 的启动流程,找到 XP 的NTLDR 然后启动), Bootmgr 就去寻找系统分区(系统分区和主分区的概念不是一样的哦)Windows/System32 下的 Winload.exe 加载操作系统内核。
EFI Boot介绍
EFI 的全称是可扩展固件接口 (Extensible Firmware Interface),它是 Intel 公司为全新类型的固件体系结构、接口和服务提出的建议性标准。该标准有两个主要用途:向操作系统的引导程序和某些在计算机初始化时运行的应用程序提供一套标准的运行环境;为操作系统提供一套与固件通讯的交互协议。
简单说,EFI 是BIOS 的替代者。它为操作系统和固件提供了更加强大、安全、方便的交互途径。EFI 规范定义的接口,包括数据表包含平台的信息,可在 OS Loader 和OS 的启动和运行时服务。
EFI固件提供了几种技术优势:
引导能力支持大容量磁盘(超过 2 TIB );
更快的启动;
独立 CPU 的体系结构;
CPU 的独立的驱动程序;
灵活的预操作系统环境,包括网络功能;
模块化设计;
EFI 启动还需要一个特殊的分区表,该分区表指向一个特殊的文件。通常情况下该文件位于\EFI 路径,EFI 启动涉及到一个写入到 firmware 中的 boot loader,EFI并不把启动程序放置在 MBR中,firmware 知道如何读取分区表以及 FAT 的文件格式。EFI 系统分区是用 FAT 格式格式化的特定分区,其中包含 boot loader, 该boot loader 是EFI 可执行程序,可被 EFI boot manager 载入和运行。
Boot loader 被设置为一个可以通过固件访问的文件。Boot loader 允许用户选择并加载操作系统。所有的 boot manager 都包含一个 EFI 变量,该变量被用来定义固件配置参数。
MBR与GPT
MBR:主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。
主引导扇区记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息,是数据信息的重要入口。如果它受到破坏,硬盘上的基本数据结构信息将会丢失,需要用繁琐的方式试探性的重建数据结构信息后才可能重新访问原先的数据。主引导扇区内的信息是通过分区程序写入的,它是低级格式化的产物,和操作系统没有任何关系(操作系统是创建在高级格式化的硬盘分区之上,是和一定的文件系统相联系的)。
对于硬盘而言,一个扇区可能的字节数为128×2n (n=0,1,2,3)。大多情况下,取n=2,即一个扇区(sector)的大小为512字节。
MBR的限制:
在MBR 分区表中最多 4 个主分区或者 3 个主分区+1 个扩展分区:从主引导记录的结构可以知道,它仅仅包含一个64个字节的硬盘分区表。由于每个分区信息需要16个字节,所以对于采用 MBR型分区结构的硬盘,最多只能识别 4个主要分区(Primary partition)。
MBR分区方案无法支持超过 2TB容量的磁盘。因为这一方案用 4 个字节存储分区的总扇区数,最大能表示 2 的32 次方的扇区个数,按每扇区 512 字节计算,每个分区最大不能超过 2TB 。磁盘容量超过 2TB 以后,分区的起始位置也就无法表示了。
GPT:全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的。相对于PC常用的较旧的主引导记录 (MBR)分区方案,GPT提供了更加灵活的磁盘分区机制。
GPT使用 GUID分区表 (GPT)磁盘分区系统。
GPT磁盘提供了以下好处:
最多允许 128 个分区;主引导记录 (MBR) 磁盘可以支持 4 个主分区和扩展分区内的 124 个附加分区。
允许大于 2 TB 的卷容量,而2TB 是MBR 磁盘的极限。
由于分区表提供了复制和循环冗余校检 (CRC) 保护,所以更加可靠。
能在所有基于 x64 平台上用作存储卷,包括运行 Windows XP Professional x64 Edition 的平台。从Windows Server 2003 SP1 开始,GPT 磁盘也可用作基于 x86 的Windows 平台上的存储卷。
可用作基于 x64 的Windows 7、Windows Vista 和Windows Server 2008 版本上的引导卷。从Windows Server 2003 SP1 开始,GPT 磁盘也可用作基于 Itanium 的系统上的引导卷。
注意:Windows 仅支持从包含 Unified Extensible Firmware Interface (UEFI) 引导固件的系统上的 GPT 磁盘引导。
注:哪些系统支持 UEFI 启动?为什么当前我们不能支持 32bit 的win8 UEFI 启动?
目前我们的 BIOS 的Build 生成是 x64 模式的,因此 32 位的 Win8 UEFI 是不被支持的。
总结:UEFI是新式的BIOS,legacy是传统BIOS。你在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果你是在Legacy模式下安装的系统,也只能在legacy模式下进系统。UEFI只支持64为系统且磁盘分区必须为GPT模式,传统BIOS使用INT13中断读取磁盘,每次只能读64KB,非常低效,而UEFI每次可以读1MB,载入更快。此外,Win8,更是进一步优化了UEFI支持,号称可以实现瞬时开机。