无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4100|回复: 9
打印 上一主题 下一主题

uefi启动概览

[复制链接]
跳转到指定楼层
1#
发表于 2020-1-1 01:47:46 来自手机 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
启动过程
启动管理器(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进入内核。

评分

参与人数 1无忧币 +5 收起 理由
zhczf + 5 赞一个!

查看全部评分

10#
发表于 2022-12-15 11:47:53 | 只看该作者
sairen139 发表于 2020-1-1 09:20
甚至一个小小的efi文件本身就可以是一个操作系统

有这样的.efi操作系统么?
回复

使用道具 举报

9#
发表于 2022-10-2 05:06:19 | 只看该作者
学习了,非常感谢
回复

使用道具 举报

8#
发表于 2020-10-9 18:07:03 | 只看该作者
下载看看,感谢分享
回复

使用道具 举报

7#
发表于 2020-1-1 10:11:07 | 只看该作者
學習中感謝大大分享
回复

使用道具 举报

6#
发表于 2020-1-1 10:08:03 | 只看该作者
本帖最后由 kuer 于 2020-1-1 10:12 编辑
sairen139 发表于 2020-1-1 09:17
补充说明:如果用别的efi替换掉(ESP)\efi\boot\bootx64.efi,将进入新的一番广阔天地,可以利用uefi协议中 ...

请教大神 如何让只能bios启动的PE加入uefi ,(用MBROSTool写入U盘)实现双启!
回复

使用道具 举报

5#
 楼主| 发表于 2020-1-1 09:20:15 来自手机 | 只看该作者
甚至一个小小的efi文件本身就可以是一个操作系统

点评

有这样的.efi操作系统么?  详情 回复 发表于 2022-12-15 11:47
回复

使用道具 举报

4#
 楼主| 发表于 2020-1-1 09:17:44 来自手机 | 只看该作者
补充说明:如果用别的efi替换掉(ESP)\efi\boot\bootx64.efi,将进入新的一番广阔天地,可以利用uefi协议中对各种预设功能无所不能
回复

使用道具 举报

3#
发表于 2020-1-1 07:17:40 | 只看该作者
补充几点我的理解:
1. UEFI完成初始化后就到了UEFI启动菜单,或者说是启动序列。默认不显示菜单直接启动第一项。
我们可以通过按键调出这个菜单,不同的主板这个按键是不同的,使用最多的是F12, 此外F11,F10,F9,F8,ESC都有可能。
我们也可以通过软件如bootice 和xorboot 等查看及修改这个菜单(启动序列)

2. UEFI启动序列第一位一般都是(ESP)\efi\boot\bootx64.efi
在只安装windows系统的电脑中这个文件就是(ESP)/efi/microsoft/boot/bootmgfw.efi 的副本
而这个文件也是C:\Windows\Boot\EFI\bootmgfw.efi 的副本
在多系统电脑或者使用了第三方启动管理器的电脑中这个文件就不一定是bootmgfw.efi了。这时windows安装程序或者引导修复工具有可能会将(ESP)/efi/microsoft/boot/bootmgfw.efi 放到启动序列的第一位

3. 当主引导程序是bootmgfw.efi 时,后面的启动过程就是楼主描述的情景。

4. BCD文件是bootmgfw.efi 的配置文件,也包含启动菜单。(BCD也是bios下的bootmgr的配置文件)
  BCD菜单默认第一项,只有一项时默认不显示,这些都是可以修改的。
  BCD中对分区的指定有几个方法:boot、locate、partition
  当使用partition方法指定分区时,BCD记录的是GPT硬盘的GUID和分区GUID,或者是MBR硬盘的磁盘签名和分区偏移量,这也是bcd容易出错的原因,只要磁盘签名/分区偏移量/GUID这些数据发生变化,不更新BCD记录当然就会出错。另外,wim文件/sdi文件的路径与bcd记录不符也是bcd出错的常见原因。

评分

参与人数 1无忧币 +5 收起 理由
zhczf + 5 赞一个!

查看全部评分

回复

使用道具 举报

2#
发表于 2020-1-1 03:54:18 | 只看该作者
学习了,非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-15 12:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表