U盘启动PE起码要10分钟,怎么办?

来源:互联网   编辑:思良  发表时间:2018-07-05  关注度:1196  

思良:永州高手他的博客很多文章值得学习,鄙视新浪博客插广告

本人办公用的电脑是845GL的,有USBHDD启动项,也可以做成U盘启动PE,开始以为PE启动不了,后来看到读写指示灯不停地闪,应该在读,等吃了一餐饭回来,哎,你还别说,进去了!后来作了统计启动时间大概要12分钟。镜像为37M,因此推断U盘的加载速度大体为3M/分,真是不堪忍受!
845的板子Windows 下U盘读写速度也不慢,说明还是支持2.0的,大体上是bios不支持吧,如果在DOS中先将其驱动再进PE应该是可行的。上网一搜,真还有人做成了,无忧启动论坛hytmtet网友有启动方法和做好的文件。载下后赶快试,还是不成功,经一步一步查原因是因为使用DI1000DD.SYS来出U盘的不兼容,换成aspidisk.sys盘是出来了,但后续命令又出错,U盘启动又特别费时间,U盘启动又不能在虚拟机中调试,非得一遍一遍重启机器不行,人都搞毛了。于是脾气也上来了,干脆花点时间彻底搞好。经两日的安装调试,终于能够在不到1分钟内进PE了。不敢独享,提出来让大家省点时间。
一、具体思路(这个可不是原创,感谢hytmtet网友,本来想原创,无奈人家已经先原创了)
1、用grub菜单方式启动一个30~50M的DOS镜像,进DOS
2、在纯DOS中用usbaspi.sys和aspidisk.sys驱动USB20
3、找到U盘,将PE启动文件拷贝到上述的DOS镜像A盘
4、再从A盘用grub.exe调用PE的装载程序启动PE。

二、PE的启动过程
下面以0911为准讲一下Pe的启动过程:
系统启动控制转入装载器ldrxpe->ldrxpe查找\minpe\pe文件获得启动镜像―>载入启动镜像启动PE。
以上关键的一点就是ldrxpe中指定了配置文件PE的位置,只要用ultraedit找到minipe\pe,如将之改为mini\pepe,那么启动时就会找mini下的pepe文件,再把ldrxpe改个名称如myldr等,就在配置文件中指定不同的镜像来启动不同的PE了。

三、一些预先约定
鉴于装载器名称和配置文件名称和位置都是可以改的,所以各种PE安装目录和装载器名称五法八门,有的文件还会因位置重叠而在安装时互相覆盖。我列了一个表格,大家看看它们将目录搞得如何杂乱
版本       装载器     镜像名称位置       装载文件     PE配置文件
0418       \ldrxpe    \maotao\wxpe.is_   \winnt.xpe     \
0911       \ldrxpe    \minipe\wxpe.is_   \minipe\pe      \minipe\
小小强1.3  \zjqpe     \wxpe\wxpe.im_      \wxpe\pe.x     \wxpe\
Deepinpe_v2 \ldrxpe    \maotao\wxpe.im_    \winnt.xpe     \extra\
基于简单和规范的原则也为了后续的工作能够增加通用性,先作些约定很有必要:

1、统一以毛桃的0911为准,约定Winpe配置文件和U盘标志文件位于U盘\MiniPE下,文件名为“PE”,启动其他的PE均可通过修改这个文件来实现,这是一个文本文件,语法也很简单。

如小小强的PE如下:

[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
OsLoadOptions="/minint /fastdetect /rdpath=WXPE\WINPE.IM_"

毛桃0911如下:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=MINIPE\WinPE.IS_"

只要修改其中最后一行,有些是加rdexportascd参数的,大概意思就是作为CD镜像,不加代表作软盘镜像(我没有仔细查阅相关资料)。
等号后面的就是指定镜像的位置,只要改动这两个参数就可启动多种PE。

2、统一使用0911的ldrxpe来作为装载器,即约定在驱动USB20后,统一由grub.exe链式装入毛桃0911的ldrxpe来启动。

3、无论任何情况,均将PE的设置文件即Winpe.ini与其镜像文件放在一起。
基于以上3条,其他各种版本的PE均可以不用安装,将相关文件(主要是系统镜像、外置程序、WinPE.ini文件)拷贝到U盘或硬盘即可。这样使各种PE可以共存于一个盘,且使启动文件变得清爽,也不易搞错。

三 先装载USB20驱动再进PE的实现

有了上述三条约定,我们做启动就方便多了:

1、做一个40M的软盘DOS启动镜像,只要himem、io.sys、command.com、config.sys、autoexec.bat、usbaspi.sys、aspidisk.sys文件,将毛桃0911的ldrxpe文件拷入镜像,再在镜像中建一个MiniPE目录,并将毛桃0911的MiniPE下的ntcom拷入其中。也可以再将grub.exe文件放到镜像中,这样启动时就不用找这个文件了。
 之所以要一个40M的镜像是考虑到PE的系统镜像都是经过压缩的多数不超过40M,如果PE系统镜像超过39M,MEM的A盘是放不下的,要用winimage改它的容量,改100M都是允许的,但要考虑物理内存的容量,使用时请根据PE镜像的大小来决定DOS启动镜像的大小。如小小强的PE可以用30M的启动镜像,深度的2003内核的要40M。如果只有128M内存,请使用相对较小的PE。这也是这个方法的一个最大缺点,即启动镜像占去的这些内存进PE后也是不能使用的(当然应该还是有办法释放的)。

2、做一个根据PE文件的设置将WinPE相关文件拷入启动后的内存模拟A盘中,因为要读配置并拷贝文件,笔者写了个小程序来做这一工作,编译后取名为“copype.exe”。当然,也可用批处理解决,只是我嫌麻烦,况且也要用一些工具,倒还不如自己专门做一个,用法也很简单:
copype U:--从U:盘将文件准备到MEM模拟的A盘。此文件要求放到上述启动镜像的MiniPE下。

3、做好相关的config.sys、autoexec.bat和menu.lst文件就可以了,具体如下:

config.sys:
device=himem.sys /testmem:off
device=usbaspi.sys /e /r /norst
devicehigh=aspidisk.sys
files=20
buffers=30
dos=high,umb
lastdrive=z

autoexec.bat:
@echo off

rem 该文件统一以U盘的“\MiniPE\PE”文件(即毛桃的0911的WinPE镜像定义文件)作为标准
rem 它是一个文本文件,要启动各种PE均可修改这一个文件即可,因此镜像和winpe.ini文件可以放到其他目录。
rem 本文件调用的“COPYPE”为自编的一个文件,功能为从当前盘的PE读其中定义的PE镜像包位置,
rem 再从传递给它的U盘参数将文件准备到软盘中,实际上就是准备存放包的目录和拷贝winpe.ini文件

cls
path a:\
echo Searching USB DEVICE......
set UDrv=
set PeFlag=minipe\pe
rem 找PeFlag文件就代表找到U盘
if exist z:\%PeFlag% set UDrv=z:
IF not "%UDrv%"=="" GOTO ufind
if exist y:\%PeFlag% set UDrv=y:
IF not "%UDrv%"=="" GOTO ufind
if exist x:\%PeFlag% set UDrv=x:
IF not "%UDrv%"=="" GOTO ufind
if exist w:\%PeFlag% set UDrv=w:
IF not "%UDrv%"=="" GOTO ufind
if exist v:\%PeFlag% set UDrv=v:
IF not "%UDrv%"=="" GOTO ufind
if exist u:\%PeFlag% set UDrv=u:
IF not "%UDrv%"=="" GOTO ufind
if exist t:\%PeFlag% set UDrv=t:
IF not "%UDrv%"=="" GOTO ufind
if exist s:\%PeFlag% set UDrv=s:
IF not "%UDrv%"=="" GOTO ufind
if exist r:\%PeFlag% set UDrv=r:
IF not "%UDrv%"=="" GOTO ufind
if exist q:\%PeFlag% set UDrv=q:
IF not "%UDrv%"=="" GOTO ufind
if exist p:\%PeFlag% set UDrv=p:
IF not "%UDrv%"=="" GOTO ufind
if exist o:\%PeFlag% set UDrv=o:
IF not "%UDrv%"=="" GOTO ufind
if exist n:\%PeFlag% set UDrv=n:
IF not "%UDrv%"=="" GOTO ufind
if exist m:\%PeFlag% set UDrv=m:
IF not "%UDrv%"=="" GOTO ufind
if exist l:\%PeFlag% set UDrv=l:
IF not "%UDrv%"=="" GOTO ufind
if exist k:\%PeFlag% set UDrv=k:
IF not "%UDrv%"=="" GOTO ufind
if exist j:\%PeFlag% set UDrv=j:
IF not "%UDrv%"=="" GOTO ufind
if exist i:\%PeFlag% set UDrv=i:
IF not "%UDrv%"=="" GOTO ufind
if exist h:\%PeFlag% set UDrv=h:
IF not "%UDrv%"=="" GOTO ufind
if exist g:\%PeFlag% set UDrv=g:
IF not "%UDrv%"=="" GOTO ufind
if exist f:\%PeFlag% set UDrv=f:
IF not "%UDrv%"=="" GOTO ufind
if exist e:\%PeFlag% set UDrv=e:
IF not "%UDrv%"=="" GOTO ufind
if exist d:\%PeFlag% set UDrv=d:
IF not "%UDrv%"=="" GOTO ufind
if exist c:\%PeFlag% set UDrv=c:
IF not "%UDrv%"=="" GOTO ufind
if exist b:\%PeFlag% set UDrv=b:
IF not "%UDrv%"=="" GOTO ufind
if exist a:\%PeFlag% set UDrv=a:
IF not "%UDrv%"=="" GOTO ufind
GOTO ERR_FindUDrv

:ufind
a:
cd\
if not exist grub.exe copy %UDrv%\boot\grub\grub.exe
cd minipe
rem 以U盘的minipe中的PE作标准配置位置
copy %UDrv%\minipe\pe

rem 准备PE镜像和Winpe.ini文件
copype %UDrv%
cd\

rem 用grub.exe来链式装载PE
grub.exe --config-file="root (fd0);chainloader (fd0)/ldrxpe"
goto end

:ERR_FindUDrv
cls
echo USB Device Not Found.
goto end

:ERR_CopyFile
echo Not found "PE" file!
goto END

:END

注:虽然有点长,但思路是清晰的,也作了注释,应该很容易读懂。

menu.lst:(只列出启动本节内容)
title WinPE工具(USB20预安装版,老机适用)
find --set-root /boot/usb20/usb40m.gz
map --mem /boot/usb20/usb40m.gz (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

注:上述启动文件放在U盘的boot\usb20下,文件名usb40m.gz。(我的想法是将所有有关启动的文件都放到boot下)
工作全部做完了,应该可以成功的。


原文:http://blog.sina.com.cn/s/blog_5ceb0c9c0100c6tp.html

    支付宝扫码领红包,不用多说,用过的人都知道,双赢的,你得红包,我得到同等推广红包,比如你扫到1元,我也得1元,大家得到的红包可以去实体店消费!新用户至少10元以上哦,每天都有!希望大家每天来本站扫码!感谢感谢!

    把打赏改成扫码红包了!支持本站就扫码下!


下一篇:乐PAD A2207 RECOVERY破解及ROOT教程


上一篇:win7无法使用Aero Peek预览桌面


小提示:按 回车[Enter]键 返回,按 ←键 返回上一页, 按 →键 进入下一页。

网友评论(0条评论)

选择头像
     

新闻评论(共有 0 条评论)

手机访问

本站APP

联系我

加我微信