|
小内存机子启动WinPE时常在LOGON期间停死,初步发现是因为内存不足。但处理得好,目前基于1111版的很多修改版都能很好启动。要使LOGON顺利完成,关键是尽早取得内存数分析是否要创建页文件。以往一直用AUTOSETPAGEFILE.EXE,但AUTOSETPAGEFILE.EXE有二个小BUG,本人所做的工具,最了解了,特别是在一些小内存的机子容易出现,而小内存的机子恰恰是启动过程中最需要创建页文件的。它是通过多层调用SETPAGEFILE.EXE来工作的,所以有时会出现无法创建页文件,导致后面启动的进程没有内存执行,因而Logon无法继续。
若在RunOnceEx或RunOnce处加入AUTOSETPAGEFILE.EXE,此时系统的可用内存还是较足的,但因为多层调用,到SETPAGEFILE.EXE内存已很少了,这过程为:
XPEInit ==> [XPESET] ==> AUTOSETPAGEFILE.EXE ==> SETPAGEFILE.EXE
而 AUTOSETPAGEFILE.EXE 调用 SETPAGEFILE.EXE的机制设计得不合理(当初本人没考虑那么复杂), AUTOSETPAGEFILE.EXE没等 SETPAGEFILE.EXE完成就返回给XPEInit 或XPESET,从而使XPEINIT启动注册表中的下一进程,这样内存更少了,已启动的SETPAGEFILE.EXE无法工作,XPEINIT启动的进程无法运行。小内存的机子不能启动往往就停在这里(Logon处停死)。
若在启动组(此时explorer.exe已启动)加入AUTOSETPAGEFILE.EXE或桌面出现以后再试图执行SETPAGEFILE.EXE,小内存的机子可用内存已很少了,有时连SETPAGEFILE.EXE都不能启动,它启动不了,其它的事别谈,因为连页文件都无法创建。
因此,要使小内存的机子顺利启动,最好是在XPEINIT初始化之前设置虚拟内存,最直接的方法是由XPEINIT读配置文件根据机子的内存大小来设置,即在Logon期间尽早设置好虚拟内存,一旦有了虚拟内存,后续的Logon就顺了。
重编译XPEINIT的大师可否加上这个功能:在XPEINIT初始化之前分析系统的内存状态况,并设置合理的虚拟内存?
[ 本帖最后由 lxl1638 于 2006-12-19 04:27 AM 编辑 ] |
|