UEFI下Windows引导过程

UEFI下Windows引导过程
引导⽂件
在UEFI安装完操作系统后,Windows⾄少使⽤两个分区,⼀个叫做ESP分区(EFI SYSTEM PARTITION),⽤于存放启动⽂件,另⼀个则是BIOS下正常的系统分区,不同的是,BIOS下引导⽂件是,UEFI下引导⽂件式winload.efi,两者都是pecoff格式的,但UEFI⽤的是各种固件接⼝,⽽BIOS使⽤的是中断。有时还会有⼀个MSR分区,不过这个分区并不重要,实验可以删除。
安装完成后,Windows还会将⾃⼰的启动管理器的信息写⼊固件的优先启动项中,这样在BDS阶段,固件会默认引导Windows启动管理器。默认情况下,UEFI固件加载的启动⽂件式EFI\BOOT\bootx64.efi(bootia32.efi),⽽Windows强制写⼊的启动项则会加载
活性氟化钾>单向离合器轴承EFI\MICROSOFT\BOOT\bootmgfw.efi,这两个⽂件其实是⼀模⼀样的⽂件。
注册表项
系统安装完成后,安装程序会将引导信息保存在ESP中的BCD⽂件中,路径为EFI\microsoft\boot\BCD,BCD⽂件是⼀个注册表巢⽂件,反应到注册表⾥就是LOCAL_MACHINE下的BCD00000000,⼀般情况下hivelist是不导⼊这个⽂件的,我们可以在regedit中⼿⼯导⼊这个⽂件来查
看。现在可以通过BOOTICE和REGEDIT⼀起看来理解这个⽂件。在Object下⾯是所有的启动ENTRY,每个ENTRY⽤⼀个GUID值标识。
用户关注度
每个ENTRY下有⼀个Description和Elements,其中Description就是这个ENTRY的描述信息,⽽Elements则是⼀系列键值对,其中键⽤⼀个数字表⽰,⽐如12000004就是引导名称,⽽1100001则是引导位置信息,这个键值对在BOOTICE中就表现位右边那⼀栏。
引导定位
现在分析这个1100001,选择完要启动的操作系统后,启动管理器就是从这个键值对来确定加载哪个分区的winload.efi。打开DiskGenius,点击系统分区,看它的分区GUID,可以看出0x20处的16字节是分区GUID,⽽0X38开始的16字节则是硬盘GUID。
立体声音
在UEFI系统中,各种设备使⽤设备路径来标识,⽐如分区的路径可能就是pcicontroller()/pci(0,1)/sata(0,0,0)/hd(2,分区GUID,起始地址,结束地址)。
⽽对于Windows的loader来说,它只需要⼀个满⾜这样条件的设备路径就可以从那个设备启动:倒数第⼆个设备安装有
EFI_BLOCK_IO_PROTOCOL,这样它就可以读取磁盘GUID来和0x38处的值进⾏⽐较,⽽倒数第⼀个设备是个分区设备
(MSG_DP_TYPE),loader会通过这个设备的GUID和注册表中的进⾏⽐较来确定启动分区,这两个都匹配,那么Windows便会加载⼀个⼩型的NTFS⽂件系统,然后尝试着从那个分区设备中加载12000002也就是BOOTICE中ApplicationPath指定的引导⽂件。
启动过程
启动管理器(bootxxx.efi)会⾸先加载BCD⽂件,从BCD中读取所有启动项,如果有多个启动项并且没有默认启动项就会有⼀个菜单来显⽰,当⽤户选中其中某个启动项后,启动管理器就会从对应的分区(通过分区GUID)中读取winload.efi,如果这时不到winload.efi,或者winload.efi签名校验失败,就会蓝屏0xc000000e,即不到引导⽂件,加载完winload.efi后,控制权就正式交给winload.efi。 Winload.efi做的第⼀件事就是通过BootService的GetMemoryMap提供的物理内存信息来构造页表以及PFN数据库,然后将
ntoskrnl,hal以及SYSTEM\Service下的所有Boot型驱动以及他们需要的导⼊库读取加载到内存中,因为此时还是保护模式下,所以需要页表中建⽴这些⽂件的映射信息。(在IA32e下的UEFI开机后是会默认开启分页的,但是虚拟内存和物理内存是1:1映射的,所以进了Windows内核后不可能还⽤原
来的地址)读取完成后,会对这些⽂件进⾏签名校验,如果校验失败,那么会蓝屏
炉用风机
冷冻水产品INACCESSIBLE_BOOT_DEVICE,即启动设备⽆效。这⼀步完成后,Windows会进⼀步初始化GDT和IDT,然后在页表中分配内核堆栈,初始化SystemPTE。最后调⽤ExitBootService退出引导阶段,调⽤SetVirtualAddress将EFI部分固件内存映射到虚拟内存,然后把页表基址载⼊CR3寄存器,开启分页并跳转到ntoskrnl的KiSytemStartup进⼊内核。

本文发布于:2024-09-22 06:43:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/246385.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:分区   启动   引导   设备   信息   启动项   页表
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议