无忧启动论坛

标题: 关于先启动USB20再启动PE之大镜像法之改进 [打印本页]

作者: hhh333    时间: 2008-5-8 07:11
标题: 关于先启动USB20再启动PE之大镜像法之改进
我的主板是845GL,进PE要12分钟,用hytmtet 的方法进不了,关键是DI1000DD.SYS不兼容,用aspidisk.sys兼容了后续命令又出错。人都搞毛了,U盘启动又特别费时间。干脆花点时间彻底搞好。经两日的安装调试,终于能够在不到1分钟内进PE了。考虑到可能有多种PE,位置也可能不同,于是作进一步改进,现在已经终于能够适应多种PE了。

为了增加通用性,先作些约定:

1、统一约定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、基于上述第一条,毛桃的位于启动盘根目录下的ldrxpe是用来读这个文件的,因此约定在驱动USB20后,统一由grub.exe链式装入毛桃0911的ldrxpe来启动。

3、无论任何情况,均将PE的设置文件即Winpe.ini与其镜像文件放在一起。
基于以上3条,其他各种版本的PE均可以不用安装,将相关文件(主要是系统镜像、外置程序、WinPE.ini文件)拷贝到U盘或硬盘即可。这样使各种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文件放到镜像中,这样启动时就不用找这个文件了。

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/usb20.gz
map --mem /boot/usb20/usb20.gz (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
注:上述启动文件放在U盘的boot\usb20下,文件名usb20.gz。(我的想法是将所有有关启动的文件都放到这里)
工作全部做完了,应该可以成功的。
本来想将启动包传上来但允许上传的太小只将我的工具传上来吧: copype.rar (9.31 KB, 下载次数: 158)

对了,为了启动多种PE我还做了一个批处理,放到\MiniPE下运行的,内容如下:
@ECHO OFF
CLS
COLOR 0A
GOTO MENU
:MENU
cls
ECHO.
ECHO.==================请选择要启动的WinPE项目===========================
ECHO.
ECHO.  1. 启动-老九WinPE070418老毛桃修改版(WinXP内核,MAOTAO\WinPE.IS_)
ECHO.
ECHO.  2. 启动-老九WinPE070911老毛桃修改版(WinXP内核,MINIPE\WinPE.IS_)
ECHO.
ECHO.  3. 启动-深度WinPEV2 080429版(Win2003内核,extra\Deepin.IM_)
ECHO.
ECHO.  4. 启动-小强WinPE 1.3版(WinXP内核,WXPE\WINPE.IM_)
ECHO.
ECHO.  5. 退   出                                                      
ECHO.
ECHO.====================================================================
ECHO.
Set /P 选择=     请选择要进行的操作 (1/2/3/4) ,然后按回车:
If "%选择%"=="" Goto MENU
If Not "%选择%"=="" Set Choice=%Choice:~0,1%
If /I "%选择%"=="1" Goto PE070418
If /I "%选择%"=="2" Goto PE070911
If /I "%选择%"=="3" Goto DEEPV2
If /I "%选择%"=="4" Goto XJ13
If /I "%选择%"=="5" GOTO END
Goto MENU
:PE070418
set RDEXP=/rdexportascd
set IMG=MAOTAO\WinPE.IS_
GOTO CREATE_PE
:PE070911
set RDEXP=/rdexportascd
set IMG=MINIPE\WinPE.IS_
GOTO CREATE_PE
:DEEPV2
set IMG=extra\Deepin.IM_
GOTO CREATE_PE
:XJ13
set IMG=WXPE\WINPE.IM_
:CREATE_PE
ECHO.
echo 生成装载参数配置文件:“PE”. . .
attrib -r -h -s PE
echo [SetupData]>pe
echo BootDevice="ramdisk(0)" >>PE
echo BootPath="\WXPE\SYSTEM32\" >>PE
echo OsLoadOptions="/minint /fastdetect %RDEXP%/rdpath=%IMG%" >>PE
echo.
echo 生成“PE”完成。
echo.
pause
:END

这里有一个做好的GHO包,含有经本人修改的小小强的PE和深度的PE,可以克隆到硬盘或U盘,具体用法文件有说明,提供两个PE是方便大家作试验,定下来后,看决定用哪一个,再删一个,128MU盘可以装下来:http://www.fs2you.com/files/6766e987-1cdd-11dd-bdc7-0014221b798a/

[ 本帖最后由 hhh333 于 2008-5-8 05:37 PM 编辑 ]
作者: lhjyj    时间: 2008-5-8 07:19
楼主能不能搞个成品出来直接让动手能力不强的人受福啊。
还有能不能做成CDROM的。
作者: lhjyj    时间: 2008-5-8 07:22
再给楼主出个难题,NTFS格式的U盘能不能支持。必竟现在大容量U盘多了,再用FAT格式有点浪费。
作者: lc1212    时间: 2008-5-8 07:46
学习很是不错,准备找时间去试试!
作者: dnnn    时间: 2008-5-8 08:04
从U盘启动DOS我也做成功了,虚拟机加载正常,但从量产的USBCDROM启动DOS,再次运行GRUB好似不能认设备 FIND SET-ROOT也没用.

我又做了个DOS来运行GRUB虚拟USB20 DOS镜像到内存,加载USB驱动成功引导,但把这个DOS镜像作为引导文件加载到ISO,在用虚拟机测试就不能成功.

这个问题能解决否?如果解决了这个ISO就能量产到U盘,使用USBCDROM启动了.

[ 本帖最后由 dnnn 于 2008-5-8 08:14 AM 编辑 ]
作者: hhh333    时间: 2008-5-8 09:08
这个超容易
作者: wtotal    时间: 2008-5-8 10:05
共享个成品吧。    
作者: Mouse_751211    时间: 2008-5-8 13:02
好帖,慢慢学习,谢谢楼主分享。
作者: zh94518    时间: 2008-5-8 14:30
标题: 感谢 !
谢谢提供精练。。。。。。。。。

顺便提供大家需要的一些文件

[ 本帖最后由 zh94518 于 2008-5-8 02:43 PM 编辑 ]

copy4.rar

37.48 KB, 下载次数: 114, 下载积分: 无忧币 -2

copy4.part1.rar

87.89 KB, 下载次数: 116, 下载积分: 无忧币 -2

copy4.part2.rar

77.87 KB, 下载次数: 112, 下载积分: 无忧币 -2


作者: xingxing168    时间: 2009-2-9 23:29
在映泰M7VIT Bravo主板上,执行copype %UDrv%大概需要一分钟时间。
改为用xcopy命令做同样的功能仅需大概9秒时间。

原来的autoexec.bat中的copype %UDrv%改为以下两条语句。
%UDrv%\xcopy %UDrv%\minipe\winpe.ini
%UDrv%\xcopy %UDrv%\minipe\winpe.is_

另外需要将dos自带的xcopy.exe拷贝到U盘的根目录下。
作者: xingxing168    时间: 2009-2-9 23:43
推测的copype.exe文件的功能:
相当于根据文件PE的内容,执行相当于copy的功能。

PE的内容是:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=MiniPE\WinPE.IS_"
时,实际上即使没有前3行的内容也是一样的。只是判断有无OsLoadOptions=的行,若有,则查找最后一个=后的内容,如MiniPE\WinPE.IS_。再执行相当于以下两行的内容:
copy %UDrv%\minipe\winpe.ini
xcopy %UDrv%\minipe\winpe.is_

其中的%UDrv%代表U盘的盘符,如为X:,minipe\winpe.is_来自文件PE。
作者: aidixiao    时间: 2009-3-3 14:09
感谢楼主共享这么有价值的文章!我已在老主板上测试成功了!
作者: chengchun    时间: 2009-3-3 20:21
学习了,谢谢楼主,有机会试试
作者: fnycc    时间: 2009-3-11 23:04
最近才来研究先启动USB20再启动PE的问题^_^。有几个疑问:
1.PE核心全部读入内存,对小内存来说是否就无法启动PE?
2.既然已经加载2.0驱动,可否不将文件拷入a:,而是直接驱动U盘中的PE核心?
例如:grub.exe --config-file="root (hd0);chainloader (hd0)/ldrxpe"???

可能我的问题过于简单,还请各位大侠莫笑(*^__^*)
作者: x.Nichdlas    时间: 2009-4-20 12:51
想请教下怎么更改copy.exe中对于winpe.is_的定位
作者: CWD    时间: 2009-4-20 21:45
标题: 回复 #15 x.Nichdlas 的帖子
在我之前的修改印象中记得:winpe.is_ 是在MYPE 这个文件中定位的,用记事本打开MYPE 文件看看就明白了。。。
作者: x.Nichdlas    时间: 2009-4-20 21:56
原帖由 CWD 于 2009-4-20 21:45 发表
在我之前的修改印象中记得:winpe.is_ 是在MYPE 这个文件中定位的,用记事本打开MYPE 文件看看就明白了。。。

不行的 我试过改mype 可是cope.exe必须拷贝winpe.is_到一个虚拟盘才能给mype搜索到
作者: CWD    时间: 2009-4-21 00:58
原帖由 x.Nichdlas 于 2009-4-20 21:56 发表

不行的 我试过改mype 可是cope.exe必须拷贝winpe.is_到一个虚拟盘才能给mype搜索到

附图是copype 的一部分内容。。。嘿嘿。。。你确认?!

我可不想去尝试啦。。。这是hhh333 的东西,还是直接请他作答比较完善,你应该理解明白。。。
作者: CWD    时间: 2009-4-21 00:59
呃。。。忘了上图。。。

Snap1.jpg (32.53 KB, 下载次数: 71)

Snap1.jpg

作者: x.Nichdlas    时间: 2009-4-21 09:35
晕了 我用ue搜索不到 诸如ladrxpe mype winpe这些词的
我似乎我h3大的帖子问过 不过他或许太忙没看到过
作者: x.Nichdlas    时间: 2009-4-21 09:47
CWD大是用什么工具打开copype的呢?我用的是ultraedit
作者: CWD    时间: 2009-4-21 12:49
标题: 回复 #21 x.Nichdlas 的帖子
要先给copype 解压缩滴。。。UPX压缩壳。。。
作者: x.Nichdlas    时间: 2009-4-21 23:06
非常感谢CWD的指导 知道了外壳这种东西 不过我还是太笨 没法改变copype的copy方式
不过我利用了其他方法实现了~~ 开心




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