U盘启动PE起码要10分钟,怎么办?
本人办公用的电脑是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了。不敢独享,提出来让大家省点时间。 做法是: 1、先做好U盘能启动PE,不会做U盘启动者参看本人的另一帖: 2、将下述这个文件下下来后,放到\boot\usb20\下,文件名usb40.gz。 3、再在U盘根目录下的meu.lst中加入如下内容: title WinPE工具(USB20预安装版,老机适用) find --set-root /boot/usb20/usb40.gz map --mem /boot/usb20/usb40.gz (fd0) map --hook chainloader (fd0)+1 rootnoverify (fd0) 4、在U盘的minipe下放入如下文件并运行它,或者直接将硬盘中安装的毛桃的0911PE拷入本目录下进行测试。 出现以下拷贝文件过程,一般来讲就是成功的,看拷贝镜像的速度就知道,如果是支持2.0的U盘,加载起来比以前快了10倍都不止。 ![]() 另外,有人说(如neo4026)845GL不支持usb20,这种说法是不对的,845GL是绝对支持2.0的,否则不可能有这么大的速度提升,以下是XP的设备管理中明明是有2.0的。 ![]() 补充:很多网友对技术无兴趣,想用现成的,花了几天时间做了一个大家伙,可以到 (对技术无兴趣的,请跳过红色字内容) 一、具体思路(这个可不是原创,感谢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安装目录和装载器名称五法八门,有的文件还会因位置重叠而在安装时互相覆盖。我列了一个表格,大家看看它们将目录搞得如何杂乱: 版本装载器镜像名称及位置装载配置文件名称和位置winpe.ini文件名称和位置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 注:虽然有点长,但思路是清晰的,也作了注释,应该很容易读懂。 ![]() 空间的其他文章:
|
|