() 系统启动的两种引导方式

计算机系统引导方式主要有两种:一种是传统的BIOS模式,另一种是新型UEFI(全称统一的可扩展固件接口)模式。UEFI启动也可以看作是Bios的升级版。不同模式对应不同的磁盘分区类型,BIOS只可以识别MBR分区;而UEFI可同时识别MBR分区和GPT分区,所以在UEFI下可以启动不同磁盘类型中的操作系统。

BIOS芯片

BIOS+MBR引导过程

BIOS引导过程:开机自检>BIOS>MBR(主引导记录)–>DPT(磁盘分区表)>PBR(分区引导记录)> Bootmgr(引导管理器)/NTLDR>BCD(从vista开始的引导配置数据)/boot.ini(XP 引导配置文件)>Winload.exe>内核加载 >windows vista+/windows xp

开机自检,BIOS先要对CPU初始化,然后跳转到BIOS启动处进行POST自检,(此过程如有严重错误,则电脑会用不同的报警声音提醒),接下来采用读中断的方式加载各种硬件,完成硬件的初始化。读入MBR(主引导记录),MBR主要功能是在分区表(DPT)中寻找可引导的活动分区(也叫激活主分区),并找到该分区的引导扇区(分区的第一个扇区)中的分区引导记录(PBR),载入PBR中的启动管理器(bootmgr.exe或NTLDR)。注意:MBR磁盘分区格式下,一个磁盘只允许有一个分区是活动的,因此启动文件(bootmgr、BCD)必须存放在活动的主分区内,这样才能找到系统载入程序。启动管理器读取该分区boot文件夹里的启动配置文本BCD(或根目录下boot.ini),然后根据启动设置文件定位并加载二级引导载入程序winload.exe来加载OS内核。如果有多个系统,启动配置文件就会有多个启动项,相应的bootmgr也会提供选择菜单,然后则根据用户选择来决定加载哪个系统的Winload(多系统引导选择)。UEFI+GPT 引导过程

UEFI引导过程:开机>UEFI>GPT分区表>ESP分区(也称EFI分区)>\efi\Microsoft\boot\bootmgfw.efi>efi\Microsoft\BCD>\Windows\system32\winload.efi。此过程没有MBR参与。

开机启动自检,执行UEFI初始化模块;UEFI执行后,会进行CPU、北桥、南桥及存储器初始化工作,当这部分设备就绪后,紧接着它就载入UEFI驱动执行环境(Driver Execution Environment,简称DXE)。当DXE被载入时,系统就可以加载硬件设备的UEFI驱动程序了。DXE使用了枚举的方式加载各种总线及设备驱动,UEFI驱动程序可以放置于系统的任何位置,只要保证它可以按顺序被正确枚举。借助这一点,我们可以把众多设备的驱动放置在磁盘的UEFI专用分区中(ESP分区),当系统正确加载这个磁盘后,这些驱动就可以被读取并应用了。在这个特性的作用下,即使新设备再多,UEFI也可以轻松地一一支持,由此克服了传统BIOS捉襟见肘的情形。UEFI能支持网络设备并轻松联网,原因就在于此。从EFI分区找到启动管理器(\efi\Microsoft\boot\bootmgfw.efi)。启动管理器导入EFI分区BCD文件(efi\Microsoft\BCD),然后根据其配置内容加载引导加载程序winload.efi(C:\Windows\system32\winload.efi)来加载OS内核。如果BCD中有多个配置项,则会让用户选择要启动的系统。如果有多个系统,启动设置文件就会有多个启动项,相应的bootmgr也会提供选择菜单,然后则根据用户选择来决定加载哪个系统的Winload(多系统引导原理)。

在GPT磁盘格式下,windows系统的启动文件和启动配置文件(bootmgfw.efi、BCD)是存放在一个不可见的FAT格式的分区里的(也叫ESP分区或EFI分区)。

多系统启动原理

多系统启动(以Windows系统为例)中,BIOS+MBR和UEFI+GPT的引导方法基本上是一样的,都是通过启动配置文件电脑(BCD或boot.ini)来显示启动菜单,当用户选中其中某个启动项后,启动管理器会加载不同分区的Winload以启动此分区下的操作系统。

以下是通过BOOTICE修改启动配置文件(BCD),添加多系统启动项:

名词解释

BIOS:基本输入输出系统(Basic Input Output System)。它是一组固化到计算机主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。完成硬件的初始化后,开始读入磁盘中的主引导记录(MBR)。

MBR:主引导记录(Master Boot Record)是位于磁盘最前边的一段引导(Loader)代码,主要有启动代码、硬盘分区表和结束标志字三部分组成。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,硬盘的主引导记录(MBR)是不属于任何一个操作系统的,它先于所有的操作系统而被调入内存,并发挥作用,然后才将控制权交给主分区(活动分区)内的操作系统。

DPT:磁盘分区表(Disk Partition Table)属于主引导记录中的第二部分,占据主引导扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。

PBR:分区引导记录 电脑 (Partition Boot Record)可以加载该分区的io.sys (dos / win9x) 或 ntldr(win2000 xp 2003) 或 bootmgr (vista/win2008/win7/win10 )。

bootmgr:启动管理器(Boot Manager),是在Windows Vista、Windows 7、windows 8/8.1和windows 10中使用的新的启动管理器,以代替Windows NT系列操作系统(Windows XP、Windows 2003)中的启动管理器——NTLDR。

NTLDR:是一个隐藏的、只读的系统文件,位置在系统盘的根目录,功能是读取boot.ini,之后装载所选操作系统。是windows nt 4.0/windows 2000/windows xp/windows server 2003的引导文件。

BCD:启动设置数据(Boot Configuration Data) ,BCD是操作系统中的启动设置数据,在有vista或windows7的多重操作系统中,系统通过bootmgr程序导入BCD文件完成启动菜单的引导。可以在高级 系统设置-启动和故障恢复 中调整开机默认操作系统和等待时间。

boot.ini:启动配置文件,Windows NT、Windows 2000、Windows XP、Windows Server 2003主要依赖Boot.ini文件来确定计算机在引导过程中显示的可供选取的操作系统类别、等待时间等。

UEFI:统一的可扩展固件接口(Unified Extensible Firmware Interface), 这种电脑接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。

GPT:GUID磁盘分区表(GUID Partition Table)是一个实体硬盘的分区表的结构布局的标准。用于替代BIOS系统存储逻辑块地址和大小信息的主开机纪录(MBR)分区表。


电脑