无忧启动论坛

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

Windows PE Conjecture(Windows PE 猜想)

  [复制链接]
跳转到指定楼层
1#
发表于 2013-2-7 21:50:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
只要 1 个 现象/证据 说明我的猜想错了,那么你就打败我了!我就感激不尽了.
==========================================================




步入正文:


Windows PE 4.x(3.x  2.x类似)的启动过程如下.(来自微软官方说明:http://technet.microsoft.com/zh-cn/library/hh825062.aspx
                                             
1.Windows PE 在特定媒体上加载启动扇区.系统将控制传递给 Bootmgr.Bootmgr 从启动配置数据 (BCD) 中提取基本启动信息,并将控制传递给包含在 Boot.wim 文件中的 Winload.exe 文件.然后 Winload.exe 将加载相应的硬件抽象层 (HAL),接着加载系统注册表配置单元和必要的启动驱动程序.Winload.exe 完成加载后,将会准备要执行内核 Ntoskrnl.exe 的环境.
                                             
备注  
如果从只读媒体(如 CD-ROM 或 DVD-ROM)启动 Windows PE,则 Windows PE 将在内存中存储注册表配置单元,这样应用程序就可以写入注册表.应用程序对注册表所做的任何更改不会持续存在于不同的 Windows PE 会话.
                                             
2.该环境将执行 Ntoskrnl.exe 文件.然后 Ntoskrnl.exe 完成环境设置.系统将控制传递给会话管理器 (SMSS).
                                             
3.SMSS 加载注册表的剩余部分,然后配置运行 Win32 子系统 (Win32k.sys) 的环境及其各种进程.SMSS 加载用于创建用户会话的 Winlogon 进程,然后启动服务和剩余的非必要设备驱动程序及安全子系统 (LSASS).
                                             
4.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).
                                             
5.当 Wpeinit.exe 结束时,将会出现命令提示符窗口.当命令提示符窗口出现时,Windows PE 的启动进程结束.
                                                        
                                                        
                                                                                                               
猜想一:

对第4部分,Winpesh.exe 的执行顺序并非 setup.exe —> winpeshl.ini —> startnet.cmd .实际上应该是: winpeshl.ini —> setup.exe —> startnet.cmd
(该环节, Winpeshl.exe 遇到任何一个,检测终止,立即运行该文件.)


[ 本帖最后由 achst 于 2013-2-8 21:34 编辑 ]

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 很给力!

查看全部评分

推荐
 楼主| 发表于 2013-2-7 21:50:23 | 只看该作者
猜想三:BOOT.WIM 和 INSTALL.WIM 的本质


一,关于 BOOT.WIM 的部分
                                               
BOOT.WIM 中的卷#1 Windows PE 约等于 winpe.wim ;卷#2 Windows Setup 约等于 winre.wim

比较分析                                             
相同:
1.BOOT.WIM 中的卷#1 和 winpe.wim 的文件环境差不多;
2.BOOT.WIM 中的卷#2 和 winre.wim  的注册表一模一样;文件上只少 1 个 winpeshl.ini  ;
3.BOOT.WIM,WinRE.WIM,WinPE.WIM本质都是Windows PE ,大体环境差不多.

差别:
1.BOOT.WIM 中的卷#1 注册表需要将 $Windows.~bt 替换为 空值,才和 winpe.wim 相当;
2.BOOT.WIM 中的卷#2 需要添加一个 winpeshl.ini 文件才和 WinRE.WIM 一模一样(可从WinRE.WIM中拷贝,就一条命令).  /* 这也印证了 winpeshl.ini 优先于 Setup.exe  */
3.BOOT.WIM 中的卷#2 和 卷#1 相比,多了很多文件, 属定制的 Windows PE ,专用于自启动 Windows 安装程序.
                                                                                    
                                               
二,关于 INSTALL.WIM 的部分
                                               
INSTALL.WIM 一般有 5 个卷,每个卷代表一个系统版本,差不多就是每个版本 Windows 的所有文件了(不包括BOOT文件夹和BOOTMGR等引导类文件).

[ 本帖最后由 achst 于 2013-2-22 23:15 编辑 ]
回复

使用道具 举报

推荐
 楼主| 发表于 2013-2-7 21:50:20 | 只看该作者
猜想二:Win7,Win8 安装的过程


一,系统安装光盘启动进入安装环境
                                             
①加载光盘启动扇区,系统将控制传递给 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 文件.
                                             
⑤下面就进入安装界面的语言设置界面了.当到达"正在安装Windows... ...”界面时进行如下操作:
<1>复制Windows文件  //不知道
<2>展开Windows文件  //根据ei.cfg或者密钥自动判断要展开的Install.wim 镜像分卷号——即系统的版本
<3>安装功能  //不知道
<4>安装更新  //不知道
<5>完成安装  //不知道
不知道的希望有人告知一下!
但是,一定要复制BOOT文件夹,bootmgr 等引导文件和写入硬盘扇区引导信息的.
                                                                  

二,操作系统下直接SetUp.exe安装
                                             
进入Windows系统或Windows PE(相当于①~④)
                                             
手动直接运行SetUp.exe安装,相当于④的阶段结束,⑤的阶段开始.
后面一样

[ 本帖最后由 achst 于 2013-2-22 23:21 编辑 ]

点评

复制windows文件部分是把光盘上的文件复制到硬盘最后一个有足够空间的以$开头的某文件夹,后面的部分都是对硬盘上的文件操作。。  详情 回复 发表于 2013-8-7 21:52
回复

使用道具 举报

4#
 楼主| 发表于 2013-2-7 21:50:26 | 只看该作者
部分资料和论据


Ⅰ 常见 WIM 镜像的基本信息:
一,boot.wim 映像基本信息:
----------------------------
GUID: {217E9B65-39BB-4859-BBE9-1E3A052DE26C}
映像卷总数: 2
所属压缩类型: 最大压缩
是否属分包文件: 否
可启动映像卷号: 2
映像文件大小: 191420925字节
各分卷详细信息:
映像卷号: 1
----------------------------
映像名称: Microsoft Windows PE (x86)
映像描述: Microsoft Windows PE (x86)
目录数目: 2210
文件数目: 9960
解开大小: 974708969字节

映像卷号: 2
----------------------------
映像名称: Microsoft Windows Setup (x86)
映像描述: Microsoft Windows Setup (x86)
目录数目: 2443
文件数目: 10695
解开大小: 1067502067字节



二,winRE.wim 映像基本信息:
----------------------------
GUID: {217E9B65-39BB-4859-BBE9-1E3A052DE26C}
映像卷总数: 1
所属压缩类型: 最大压缩
是否属分包文件: 否
可启动映像卷号: 1
映像文件大小: 191999516字节
各分卷详细信息:
映像卷号: 1
----------------------------
映像名称: Microsoft Windows Recovery Environment (x86)
映像描述: Microsoft Windows Recovery Environment (x86)
目录数目: 2443
文件数目: 10696
解开大小: 1067502114字节



三,系统安装光盘主体
㈠win7旗舰版安装光盘之install.wim映像基本信息:
----------------------------
GUID: {FA83EECC-C676-48CA-B50D-97B4C766DEB0}
映像卷总数: 5
所属压缩类型: 最大压缩
是否属分包文件: 否
可启动映像卷号: [没有设置]
映像文件大小: 2283831212字节
各分卷详细信息:
映像卷号: 1
----------------------------
映像名称: Windows 7 STARTER
映像描述: Windows 7 STARTER
目录数目: 9612
文件数目: 48586
解开大小: 8119970326字节

映像卷号: 2
----------------------------
映像名称: Windows 7 HOMEBASIC
映像描述: Windows 7 HOMEBASIC
目录数目: 9623
文件数目: 48674
解开大小: 8140142765字节

映像卷号: 3
----------------------------
映像名称: Windows 7 HOMEPREMIUM
映像描述: Windows 7 HOMEPREMIUM
目录数目: 9841
文件数目: 49687
解开大小: 8581939355字节

映像卷号: 4
----------------------------
映像名称: Windows 7 PROFESSIONAL
映像描述: Windows 7 PROFESSIONAL
目录数目: 9899
文件数目: 50152
解开大小: 8463989395字节

映像卷号: 5
----------------------------
映像名称: Windows 7 ULTIMATE
映像描述: Windows 7 ULTIMATE
目录数目: 9935
文件数目: 50332
解开大小: 8624220791字节


㈡win7家庭版install.wim 映像基本信息:
----------------------------
GUID: {4DB440BC-7222-4651-9192-1798C4B29BCB}
映像卷总数: 5
所属压缩类型: 最大压缩
是否属分包文件: 否
可启动映像卷号: [没有设置]
映像文件大小: 2630268623字节
各分卷详细信息:
映像卷号: 1
----------------------------
映像名称: Windows 7 STARTER
映像描述: Windows 7 STARTER
目录数目: 9044
文件数目: 45608
解开大小: 7936340784字节

映像卷号: 2
----------------------------
映像名称: Windows 7 HOMEBASIC
映像描述: Windows 7 HOMEBASIC
目录数目: 11571
文件数目: 55890
解开大小: 8732252227字节

映像卷号: 3
----------------------------
映像名称: Windows 7 HOMEPREMIUM
映像描述: Windows 7 HOMEPREMIUM
目录数目: 9298
文件数目: 46870
解开大小: 8432859356字节

映像卷号: 4
----------------------------
映像名称: Windows 7 PROFESSIONAL
映像描述: Windows 7 PROFESSIONAL
目录数目: 9354
文件数目: 47298
解开大小: 8313318889字节

映像卷号: 5
----------------------------
映像名称: Windows 7 ULTIMATE
映像描述: Windows 7 ULTIMATE
目录数目: 9384
文件数目: 47447
解开大小: 8471060645字节


我的测试——猜想一的部分论据,其他不列了,没人关心
说明:Windows PE 4.x(3.x  2.x类似)在④中切入用户配置,本人将该阶段配置文件执行情况进行了如下测试,一一列出.

※测试阶段一
①注册表CmdLine和配置文件的内容
CmdLine:winpeshl.exe
winpeshl.ini:wpeinit.exe
startnet.cmd: wpeinit.exe

②测试结果列表
winpeshl.ini    startnet.cmd    启动ISO测试结果
不存在              存在            有CMD界面出现.显示:"wpeinit运行,另起一行"               //Windows PE的默认情况      
不存在           不存在            有CMD界面出现.显示:"'startnet.cmd'不是内部或外部命令,也不是可运行的程序"
   存在              存在            CMD界面不出现,黑屏,重启
   存在           不存在            CMD界面不出现,黑屏,重启  

※测试阶段二
①注册表CmdLine和配置文件的内容
CmdLine:winpeshl.exe
winpeshl.ini:空
startnet.cmd: wpeinit.exe

②测试结果列表
winpeshl.ini    startnet.cmd   启动ISO测试结果
    存在              存在          有CMD界面出现.显示:"winpeshl.ini文件存在,但没有成功启动命令.这可能是由于格式错误或可执行文件名无效导致.请参考文档以了解更多信息."


※测试阶段三
①注册表CmdLine和配置文件的内容
CmdLine:winpeshl.exe
winpeshl.ini: wpeinit.exe
startnet.cmd:空

②测试结果列表
winpeshl.ini    startnet.cmd    启动ISO测试结果
不存在           存在               有CMD界面出现.比默认情况少了wpeinit运行的行,纯CMD界面.


※测试阶段四
①注册表CmdLine和配置文件的内容
CmdLine:PECMD MAIN %SystemRoot%\PECMD.INI
PECMD.INI:wpeinit.exe  
②测试结果列表                           
PECMD.EXE    PECMD.INI       启动ISO测试结果   
存在              存在               有CMD界面出现.比默认情况少了wpeinit运行的行,纯CMD界面.


Ⅲ 常见 WIM 镜像启动后的日志记录——猜想一的论据

[ 本帖最后由 achst 于 2013-2-8 21:31 编辑 ]

进程-来自BOOT.WIM.jpg (42.69 KB, 下载次数: 178)

进程-来自BOOT.WIM.jpg

winpeshl.log from BOOT.WIM.jpg (34.08 KB, 下载次数: 168)

winpeshl.log from BOOT.WIM.jpg

进程-来自WinPE.WIM.jpg (38.14 KB, 下载次数: 179)

进程-来自WinPE.WIM.jpg

winpeshl.log from WinPE.wim.jpg (36.97 KB, 下载次数: 178)

winpeshl.log from WinPE.wim.jpg

进程-来自WinRE.jpg (28.74 KB, 下载次数: 172)

进程-来自WinRE.jpg

winpeshl.log from WinRE.jpg (29.61 KB, 下载次数: 161)

winpeshl.log from WinRE.jpg

进程-来自$Windows.~bt替换为空值的BOOT.WIM.jpg (35.45 KB, 下载次数: 164)

进程-来自$Windows.~bt替换为空值的BOOT.WIM.jpg

winpeshl.log from 修改的BOOT.WIM.jpg (39.87 KB, 下载次数: 159)

winpeshl.log from 修改的BOOT.WIM.jpg
回复

使用道具 举报

5#
 楼主| 发表于 2013-2-7 22:24:02 | 只看该作者
看 LZ 将 WinRE.WIM 变成 BOOT.WIM 卷#2  —— 可作猜想三的论据,还有注册表和相关文件的比较也不列了


方法:删掉 Winpeshl.ini ,大功告成 ,看效果
注意:该改造可逆,比如,你可以把 BOOT.WIM 卷#2 变成 WinRE.WIM.

[ 本帖最后由 achst 于 2013-2-8 21:32 编辑 ]

20130208140512.jpg (135.87 KB, 下载次数: 205)

20130208140512.jpg

20130208140534.jpg (126.82 KB, 下载次数: 181)

20130208140534.jpg

20130208140554.jpg (113.32 KB, 下载次数: 166)

20130208140554.jpg

20130208140612.jpg (121.28 KB, 下载次数: 165)

20130208140612.jpg

20130208140627.jpg (104.71 KB, 下载次数: 160)

20130208140627.jpg

20130208140656.jpg (126.87 KB, 下载次数: 160)

20130208140656.jpg

20130208140839.jpg (125.36 KB, 下载次数: 172)

20130208140839.jpg
回复

使用道具 举报

6#
发表于 2013-2-7 22:33:22 | 只看该作者
虽然看不懂,但还是要支持一下。
回复

使用道具 举报

7#
 楼主| 发表于 2013-2-7 22:34:58 | 只看该作者
原帖由 20100802 于 2013-2-7 22:33 发表
虽然看不懂,但还是要支持一下。


欢迎大家讨论,基础知识我了解一些,你哪里看不懂?

我去自己捣鼓捣鼓,20100802  兄有事直接给我发短信。

[ 本帖最后由 achst 于 2013-2-7 22:44 编辑 ]
回复

使用道具 举报

8#
发表于 2013-2-7 23:09:53 | 只看该作者
你装那两个卷分别挂上,用文件目录比较工具比较一次看看,关键是WinPEShl.EXE,Setup.EXE,WinPEShl.INI和一些CMD,INI文件是否有什么不同。
回复

使用道具 举报

9#
 楼主| 发表于 2013-2-7 23:19:25 | 只看该作者
原帖由 lxl1638 于 2013-2-7 23:09 发表
你装那两个卷分别挂上,用文件目录比较工具比较一次看看,关键是WinPEShl.EXE,Setup.EXE,WinPEShl.INI和一些CMD,INI文件是否有什么不同。


BOOT.WIM 和 WINPE.WIM , WINRE.WIM 都是Windows PE.
之前,用Beyond Compare尝试比较了一下 WinPEshl.exe ,就版本信息等不同。BOOT.WIM 中 卷#1 和 卷#2 的 WinPEShl.EXE 完全一样,实质是一个文件。
我现在不停的乱搞中。

被整晕了,我把大概的都整理成这样了。还得继续折腾。
=====================================

老大,你看看我的猜想是不是有些道理。
感觉 WinPEshl.exe 真心是 WinPEshl.ini 优先。
测试时,setup.exe 也确实被我添加的  WinPEshl.ini 截断了,没有得到运行。

[ 本帖最后由 achst 于 2013-2-7 23:32 编辑 ]
回复

使用道具 举报

10#
 楼主| 发表于 2013-2-7 23:40:34 | 只看该作者

回复 #8 lxl1638 的帖子

最近一直在折腾这个,做了一些测试。

所以,我看看能否用实验来否定这个“猜想一”
回复

使用道具 举报

11#
发表于 2013-2-8 12:20:28 | 只看该作者
LZ最好用boot.wim的卷2,使winpeshl.ini和setup.exe同时存在,注册表cmdline默认,然后测试winpeshl.ini中只有wpeinit.exe和winpeshl.ini为空的情况。
LZ的论证过程很细可是方向好像有点问题。
============================
所有的日志都没有出现winpeshl.ini和setup.exe同时存在的情况.

[ 本帖最后由 del111 于 2013-2-8 12:22 编辑 ]
回复

使用道具 举报

12#
 楼主| 发表于 2013-2-8 13:02:49 | 只看该作者
老兄说的很在理,我也确实这么做了,只是因为这些试验频繁,只放了些基础的。
========

第二个问题,也是我的错,我没说清楚,我还有个结论。叫,检测到三个文件中任一个,检测中止,立即运行。另外,winpeshl.ini命令的执行也有自己的规则。

========

要做的工作:把这些试验重走一遍,并从综合角度分析。
最好是有权威资料来参考,就不用这么辛苦了
回复

使用道具 举报

13#
发表于 2013-2-8 13:30:36 | 只看该作者
学习了,了解不多,支持一下
回复

使用道具 举报

14#
 楼主| 发表于 2013-2-8 14:02:45 | 只看该作者
欢迎大家来否定我,共同探寻真知.

LZ 有不周到的地方,还望多多包涵,如若指正,一定更正.
回复

使用道具 举报

15#
发表于 2013-2-8 17:26:56 | 只看该作者
虽然看不懂,但还是要支持一下。收藏了...

[ 本帖最后由 2012xiefi 于 2013-2-8 17:28 编辑 ]
回复

使用道具 举报

16#
发表于 2013-8-7 21:52:31 | 只看该作者
achst 发表于 2013-2-7 21:50
猜想二:Win7,Win8 安装的过程

复制windows文件部分是把光盘上的文件复制到硬盘最后一个有足够空间的以$开头的某文件夹,后面的部分都是对硬盘上的文件操作。。
回复

使用道具 举报

17#
发表于 2013-8-7 22:37:17 | 只看该作者
虽然不知道在说什么,但是好像很厉害的样子
回复

使用道具 举报

18#
发表于 2015-6-29 10:54:42 | 只看该作者
收藏学习,谢谢了!
回复

使用道具 举报

19#
发表于 2016-4-4 09:56:17 | 只看该作者
现在重新对winpe产生了兴趣,回头看,还是无忧论坛关于winpe知识研究最为透彻,感谢。
回复

使用道具 举报

20#
发表于 2016-4-4 17:42:10 | 只看该作者
好专业的样子 虽然没完全看完 赞一个~
回复

使用道具 举报

21#
发表于 2016-4-4 17:42:21 | 只看该作者
好专业的样子 虽然没完全看完 赞一个~
回复

使用道具 举报

22#
发表于 2016-8-21 10:58:12 | 只看该作者
achst 发表于 2013-2-7 21:50
猜想二:Win7,Win8 安装的过程

<1>复制Windows文件  //不知道
貌似是将 boot.wim、install.wim(或者installx.swm) 复制到 $windows.~bt 下

我的经历是,做了一个50G的C盘,压成wim后还有20G,分了5个swm,直接覆盖到安装盘。结果在复制文件到100%的时候后报错。后来发现是空间不够。我用来安装的C盘才70G,$windows.~bt下它复制了我20G的swm,然后展开的时候悲剧了。

所以得出此结论,供楼主参考。
回复

使用道具 举报

23#
发表于 2017-12-28 07:39:43 | 只看该作者
thank you for share
回复

使用道具 举报

24#
发表于 2018-2-18 08:42:46 | 只看该作者
have a look
回复

使用道具 举报

25#
发表于 2021-11-12 13:48:10 | 只看该作者
很好的技术贴,学习了
回复

使用道具 举报

26#
发表于 2022-10-30 20:39:37 | 只看该作者
给力给力
回复

使用道具 举报

27#
发表于 2022-11-5 23:08:42 | 只看该作者
看看楼主的帖子,学习一下PE的小知识啊
回复

使用道具 举报

28#
发表于 2022-11-6 21:20:29 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-14 04:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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