|
本帖最后由 lps4290 于 2014-5-28 11:07 编辑
引用achst的帖子http://bbs.wuyou.net/forum.php?mod=viewthread&tid=273524中关于PE启动过程:
----------
2.1 详细过程(微软ADK/AIK说明文档):
①Windows PE 在特定媒体上加载启动扇区.系统将控制传递给 Bootmgr.Bootmgr 从启动配置数据 (BCD) 中提取基本启动信息,并将控制传递给包含在 Boot.wim 文件中的 Winload.exe 文件.然后 Winload.exe 将加载相应的硬件抽象层 (HAL),接着加载系统注册表配置单元和必要的启动驱动程序.Winload.exe 完成加载后,将会准备要执行内核 Ntoskrnl.exe 的环境.
②该环境将执行 Ntoskrnl.exe 文件.然后 Ntoskrnl.exe 完成环境设置.系统将控制传递给会话管理器 (SMSS).
③SMSS 加载注册表的剩余部分,然后配置运行 Win32 子系统 (Win32k.sys) 的环境及其各种进程.SMSS 加载用于创建用户会话的 Winlogon 进程,然后启动服务和剩余的非必要设备驱动程序及安全子系统 (LSASS).
④Winlogon.exe 根据 HKEY_LOCAL_MACHINE\SYSTEM\Setup\CmdLine 注册表值来运行设置.Winpeshl.exe 将启动 %SYSTEMDRIVE%\sources\setup.exe 文件,前提是该文件存在.如果该文件不存在,Winpeshl.exe 将确定 %SYSTEMROOT%\system32\winpeshl.ini 文件是否指定了某个应用程序.如果该文件未指定应用程序,则 Winpeshl.exe 将执行 cmd /k %SYSTEMROOT%\system32\startnet.cmd 文件.默认情况下,Windows PE 包含启动 Wpeinit.exe 文件的 Startnet.cmd 文件.Wpeinit.exe 将加载网络资源并协调网络组件(如 DHCP).
⑤当 Wpeinit.exe 结束时,将会出现命令提示符窗口.当命令提示符窗口出现时,Windows PE 的启动进程结束.
2.2 简单理解:若为光盘启动,引导文件(例:pe.bif)——bootmgr——BCD——boot.wim——启动PE.
----------
EFI启动则为bootia32.efi/bootx64.efi——BCD——boot.wim——启动PE
x86的EFI启动只有极少数主板支持,就不作讨论了。
我尝试过在楼主的Win8x86PE中增加x64的EFI启动文件,然后根据错误提示将二三十个文件逐一替换成x64的,但依然无法启动到桌面。即使我继续替换文件至成功启动到桌面,还要将替换掉的x86文件补充回来才能支持x86程序,还要考虑修改注册表等一大堆未知问题,所以还是直接从x64PE精简来得实际。
可以看出,bootx64.efi已经决定了上面引述启动过程中调用的文件必须是x64的,所以首先必须保证上述文件的齐整,然后能否加载x86的桌面就不得而知了(感觉可行)。
我觉得只保留上述启动所调用的文件,成功启动到桌面,支持运行x86程序就足够了。x64程序支持则做成外置组件,给有需要的网友自行加载。 |
|