无忧启动论坛

标题: thinkpad的恢复功能部分原理分析 [打印本页]

作者: yjqd    时间: 2017-5-25 13:22
标题: thinkpad的恢复功能部分原理分析
thinkpa的F11键或蓝键恢复系统

thinkpa的F11键或蓝键按下后启动的是隐藏分区的tvtos\winpe.wim,它要配合隐藏分区的的其它文件才能进行恢复,如果选择完全恢复,那么将自动重启后启动隐藏分区的Recovry\WindowsRE\winRE.wim进入完全恢复的界面,由此有两个问题产生:

1、为什么重启后会自动启动启动隐藏分区的Recovry\WindowsRE\winRE.wim,而不是启动windows系统

2、为什么能进入完全恢复的界面,而不是修复界面,因为winRE.wim实际就是win7的修复计算机的文件,也就是按F8启动的文件,运行的\sources\recovery\RecEnv.exe,能进入完全恢复的界面说明它里面有thinkpad的恢复工具,在\sources\recovery确实里面有tool文件夹,那是怎样判断什么情况下启动\sources\recovery\RecEnv.exe和什么情况下启动\sources\recovery\tool下的还原工具呢,查看了一下\Windows\System32\winpeshl.ini,内容为:
[LaunchApp]
AppPath=x:\windows\system32\lrecenv.exe
而一般情况下是
[LaunchApp]
AppPath=x:\sources\recovery\RecEnv.exe

说明lrecenv.exe可以启动修复和恢复,它能进行判断,具体是怎么判断的呢

第1个问题
可以根据bcd文件中有一项/bootsequence   为启动管理器设置一次性启动序列。(也就是在下次启动时启动被设置的启动项,启动完成后,下次再重启时就按原来的启动了,也就是说只有一次优先启动),来判断在winpe中选择完全恢复时就向隐藏分区的boot\下的bcd写入了/bootsequence,事实如此,在winpe中选择完全恢复时插入一个启动u盘,设置u盘启动,启动后查看隐藏分区的boot\下的bcd,确实写入了/bootsequence 后面的内容指向winre的标识。

第2个问题

\sdrivebackup.wim解压\preboot\Recovery\下面有recover.cmd和OVRWINRE
OVRWINRE可用winhex.exe查看或者把OVRWINRE改名为OVRWINRE.txt查看内容为X:\sources\recovery\tools\recov7.exe,说明有可能是winre启动后读取了这个文件,同样进行第1个问题判断bcd内容的方式在winpe中选择完全恢复时插入一个启动u盘,设置u盘启动,启动后查看隐藏分区根目录下确实有一个OVRWINRE,但是不是没选择完全恢复它就存在里面了的呢,那就取下u盘,重启,进入完全恢复后界面,选择取消重启插入一个启动u盘,设置u盘启动,启动后查看隐藏分区根目录下已经没有了,说明选择取消或是进行恢复都会删除OVRWINRE,也就是说隐藏分区根目录平时不会存在OVRWINRE。

如果OVRWINRE确实是起到判断的条件,那么我们可以拷贝OVRWINRE到隐藏分区根目录下,按下F8键,本来应该启动到修复界面,但实际进入完全恢复界面,事实如此,你可以试一下,太让人惊喜了。


那又是怎么想到会去查看OVRWINRE文件呢,因为找第2个问题的原因只能分析在隐藏分区根目录下的文件,\preboot\Recovery\下面有recover.cmd的文件名和恢复有关,在winpe中选择完全恢复时可能就启动了这个文件,先看下里面的内容其中有
for /F "usebackq tokens=1,*" %%I IN (`bcdedit /enum osloader ^| find /I "recoverysequence"`) DO bcdedit /bootsequence %%J
这句验证了对第1个问题的判断,向隐藏分区的boot\下的bcd写入了/bootsequence
copy /Y %tvtdrive%\preboot\recovery\OVRWINRE %tvtdrive%\OVRWINRE
把OVRWINRE拷贝到了隐藏分区的根目录,这句可以说验证了对第2个问题的判断
以下是lrecenv.exe文件中的内容说明了lrecenv.exe可以启动recenv.exe和recov7.exe
x:\sources\recovery\recenv.exe \ runas %c:\ Could not get volume label of volume %s.
Opened %s.
Got exe file path from ovrwinre file: %s.
意思是从ovrwinre中获取要启动的程序路径,ovrwinre中的内容是X:\sources\recovery\tools\recov7.exe

ovrwinre在恢复界面中用户选择取消或是进行恢复都会被删除,以下内容是recov7.exe中的,可以说明是被recov7.exe删除的
if exist %s:\OVRWINRE del %s:\OVRWINRE
作者: wsdyleon    时间: 2017-5-25 14:51
支持技术研究
作者: lbw2007    时间: 2017-5-26 10:51
学习了,感谢分享!
作者: yjqd    时间: 2017-5-26 11:14
lbw2007 发表于 2017-5-26 10:51
学习了,感谢分享!

谢谢各位

帖子里的内容是我2014年夏天折腾thinkpad时所作的记录,那时不太懂启动方面的知识,很折腾了些时间,运气好,弄明白了一些原理

内容有些混乱,见谅!
作者: hero8000    时间: 2017-5-27 07:53
不错,算是技术内容。。
作者: tlzsw    时间: 2021-12-2 00:38
重装win10系统后,如何重建F11




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3