无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 35852|回复: 107
打印 上一主题 下一主题

[推荐] 改进YY版PE: 用Vista的WIM技术,建立Programs.wim外置程式镜像

[复制链接]
跳转到指定楼层
1#
发表于 2007-5-18 13:38:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
老毛桃/老九的YY版PE(配合PECMD)加外置程式和驱动似乎成为了现今无忧的主流PE。 最近下载了老毛桃的杨州版和03版本进行研究,觉得它们最大的特点在于够精简和方便,包含了不少SCSI/SATA/RAID的硬盘驱动于系统核心之中。我认为仍有以下空间可以改进:

1. 增设RAMDRIVE:老毛桃/老九可能认为采用了FBWF使得系统光盘可进行文件读写,就没有必要再保留RAMDRIVE了。我认为不是这样, FBWF服务只可以容许进行文件读写操作,但不能像RAMDRIVE服务一样全面性摹拟一个可读写的磁盘。有一些操作(如imageX /mountrw)在执行前会先检查目标盘,发觉是光盘时就会拒绝执行,虽有FBWF服务也于事无补。所以RAMDRIVE还是有需要的。况且FBWF服务只是向系统申请一个空间,不是对RAM固定占用,所以可以同时设定RAMDRIVE和FBWF而不会多占用内存。

2. 改变环境变量temp和tmp,使其指向RAMDRIVE B:。也需修改注册表,使其较好地支持繁体中文,输入法热键等等。

3. 增设WimFltr服务和imageX,以便对Vista类型镜像WIM的全面支持。

4. 用Vista的WIM技术,建立Programs.wim外置程式镜像: 老毛桃的外置程序文件夹(\Programs\*.*)是放在CD或者硬盘上面的,很多用了WinRAR进行自解压缩以便节省空间。现在我们有了RAMDRIVE和WimFltr服务,可用imageX把众多的程序文件夹压缩成一个外置程式镜像,PE运行时把它外挂到RAMDRIVE B:去。WIM镜像有很好的压缩比率,60MB的外置程序可压缩成35MB的WIM。因为Programs.wim只是外挂,它并没有真正的占用B:盘的空间,所以一只16MB的B:盘挂上60MB的外置程序后仍然有16MB的空间,十分神奇吧?!这样做除了节省空间的特色外,还有把外置程序隐蔽使其不易外露或者被更改的好处。

5. 增加一脚本,使PE可以自动或者手动搜索硬盘、光盘上的Programs.wim或者\Programs外置程序夹。

6. 把PE的文件和文件夹重新恢复标准化:WXPE恢复成I386,TXTSETUP.SI_恢复成TXTSETUP.SIF,SETUPREG.HI_ 恢复成SETUPREG.HIV. 这样做相当于把PE的神秘面纱除了下来,让更多人得以观其真正的面貌。

下面是我的具体做法择要:(所需要文件和成品ISO可以在zhaohj的FTP,khauyeung的文件夹里面找到)

1. 从老毛桃的原ISO中抽出WXPE.IS_, 解压后得WXPE.ISO, 提出里面的文件夹\WXPE,改名为\I386

2. 从老毛桃的原ISO中提出里面的文件夹\外置程序,改名为\Programs

3. 原\I386\TXTSETUP.SI_解压后是仍然不能工作的。把它删除后用我提供的TXTSETUP.SIF代替。 TXTSETUP.rar (28.63 KB, 下载次数: 256)

4. 把\I386\SYSTEM32\SETUPREG.HI_解压后得SETUPREG.HIV

5. 在Windows或者XPE的操作环境下,运行regedit.exe进行注册表操作, 加载入以下配置单元:\I386\SYSTEM32\SETUPREG.HIV, \I386\SYSTEM32\CONFIG\SOFTWARE, \I386\SYSTEM32\CONFIG\DEFAULT, 分别命名为 cxpe_system, cxpe_software, cxpe_default.

6. 导入我提供的CXPE.REG到注册表里面。 CXPE.REG.rar (6.59 KB, 下载次数: 303)

7. 卸载配置单元。

8. 把我提供的文件分别加到对应的根目录,I386和Programs文件夹下面。有三只文件至为重要( 3Files.rar (11.64 KB, 下载次数: 321) ):\I386\SYSTEM32\PECMD.INI, \I386\SYSTEM32\CPEStartup.cmd, \Programs\WINPE.INI。其中CPEStartup.cmd是用来挂接Programs.wim的灵魂。

9. 启动过程大概是这样的:PE启动时运行PECMD.EXE, PECMD.INI负责基本配置工作并把CPEStartup.cmd放在启动文件夹以执行下一步启动任务。CPEStartup.cmd搜索Programs.wim的存在, 把它外挂到RAMDRIVE B:去,并建立连结,最后加载另一个配置文件WINPE.INI。WINPE.INI加载外置基本核心和驱动,然后退出桌面。

10. 你可以参考我的成品ISO里面包含的Programs.wim,看看它是如何与CPEStartup.cmd配合工作的。\Programs\PRO_WIM.TAG是个标志文件。生成Programs.wim的指令大概是imageX
/compress maximum /capture c:\Programs c:\Programs.wim "External Programs for XPE".

假如你看不明白我说什么,那么有二个可能:

1. 我的水平太菜了,写的不知所谓,真的抱歉!
2. 你的水平太菜了,这个帖不看也吧!

很晚了,要去睡觉,迟些再补充吧!

[2007-5-18]: 回应老九建议,把imageX和WimFltr所需的文件和注册表处理整合成下面的组件WimFltr.rar。imageX的使用方法我记得有人详述过,我的中文太菜,不再敖述了。

WimFltr.rar (387.22 KB, 下载次数: 2843)

[2007-5-19]: 有网友问关于wim镜像的问题,很有共通性,我把问题和答案都放在楼顶这里:
但如果是光盘上的wim镜像 挂接后是否可写呢? 卸载的时候会不会出错?
是否有办法可挂接后内容可写 但卸载后内容不会保存到原镜像里面 这样那些需读写磁盘的软件就不用做成自解压到X盘或B盘的形式了

光、硬盘上的wim镜像, 用imagex /mountrw挂接后都是"可写"的。所谓"可写"是指把转变暂时写在记忆体(RAM)里面而不是直接地写到wim镜像。至于卸载后内容会不会保存到原镜像里面,就要看你下达的卸载过程:如果只想卸载不想保存,用imagex.exe /unmount b:\Programs指令就够了;想卸载又要保存转变到wim镜像里面,必须加上/commit于指令中:imagex.exe /commit /unmount b:\Programs。我现时在YY版PE的处理,是只挂接不卸载,所以转变都不会写回wim镜像中,你希望"那些需读写磁盘的软件就不用做成自解压到X盘或B盘的形式了"的目标是完全可以达到了。从这个角度看来,使用WIM来处理外置程式的优势就更加显而易见了。

现实是光盘上的内容都是只读的,包括Programs.wim,假如你强行/commit /unmount就可能会导致蓝屏。

[2007-5-20]: 有网友问关于蓝屏问题,有共通性,我把问题和答案都放在楼顶这里:
原帖由 fengxi 于 2007-5-19 12:06 PM 发表
按楼主的办法改装毛桃版,用mountrw 挂上了一个wim文件,读取没问题,但往里写东西时就蓝屏了,有谁能解释一下?

我想在回答fengxi问题的同时,向大家指出一些建立Programs.wim外置程式的注意事项。

fengxi,我看过你作测试用的test.wim并做了实验,发觉问题还是出在你制作的wim上面:

你的wim很简单的,**不包含任何文件夹**,只包含二个文件,都放在根目录上面:
\BootXP.IMA
\Vista_MEMTEST.IMA
我用指令imagex /mountrw c:\test.wim c:\mount把它挂在虚拟机的C:盘的\mount文件夹下面,然后用指令copy c:\temp\coolsites.htm c:\mount往它写文件,马上就蓝屏了。假如我挂的不是你的test.wim,而是我的Programs.wim,蓝屏就不出现。那么,你的test.wim出了什么问题呢?

经研究问题是出在它*不包含任何文件夹*。我把你的test.wim改了一下,根目录下面增加了一只叫images的文件夹,然后把二个文件放在文件夹里面:
\images\BootXP.IMA
\images\Vista_MEMTEST.IMA
使用相同的指令挂接和写文件,这次写操作完全成功,蓝屏并不出现。随后的imagex /commit /unmount c:\mount指令也成功把所写的coolsites.htm这个转变更新到test.wim中。

我不懂如何解释这发生的现象,我想假如wim下面不带文件夹,wimfltr很可能会视它为一整个硬盘,写操作时会申请一个很大的临时空间,从而把系统搞垮。

结论是建立外置程式的wim镜像时,根目录下面最小得包含一只文件夹,写操作时要考虑系统的内存和临时写空间的承受能力。老毛原程式带很多自解压程序,解压过程必须使用临时写空间,不利wimfltr操作,同时也拖慢执行速度,建议解压后才整合到wim镜像中去。
[2007-5-25]: 答覆了网友关于使用imagex mount和mountrw的问题。
原帖由songq发表
还要请教楼主,老毛桃的iso我始终没有改成功(在虚拟机里mountrw不成功,mount可以),
现在在下楼主的iso.
1. 不用iso,用移动硬盘peldr+img,采用老九的最新pecmd没问题.可以读写,没有用到ramdrv.
2.如果用iso方式(也是img),在vmware虚拟机里,pecmd moun 加载不行,我以为是光盘启动需要ramdrv的原因,又把它加上,还是不行,但试了imagex mountrw不行,如果mount的话则可以.
是什么原因呢?
楼主改动的太多了,我只想把外置程序压缩成wim,但始终没弄好,再不行的话,从你的iso往回改

回答你的问题:
1. 用移动硬盘peldr+img时,你的PE是建立在硬盘上的(X:盘是硬盘),你的Programs.wim也是在硬盘上,而且挂接的目标盘也是在硬盘上。硬盘是可以读写的,所以一切都不成问题。
2. 用iso方式时,你的PE是建立在光盘上的(X:盘是光盘),假如把挂接的目标盘设定在X:盘的话,无论你用mountrw或者mount,挂接都不会成功,因为imagex会拒绝把wim挂接到唯读光盘。假如你加了ramdrv,并把挂接的目标盘设定为ramdrv,那么用mount指令是肯定没有问题了,但是mountrw还是有机会不成功的,这是因为如下面老九指出的:imagex /mountrw 参数要求原来的WIM文件是可写的,放在光盘上的WIM文件是只读的,所以 imagex /mountrw 挂不上WIM文件,要改用 imagex /mount。
关于如何灵活地自动处理用mount和mountrw的方法,请参考我下面答覆老九附上的脚本。
原帖由 lxl1638 于 2007-5-26 12:24 AM 发表
是不是这样:
imagex /mountrw 参数要求原来的WIM文件是可写的,放在光盘上的WIM文件是只读的,
所以 imagex /mountrw 挂不上WIM文件?

回答老九,你已经正确地答覆了自己提出的问题了。其实,我们不一定把wim挂接成可读可写的。我自己是用一只CPEStartup.cmd来执行找寻和挂接的wim文件的,我的处理原则是:先尝试用mountrw挂接到ramdrv,不成功则改用mount挂接。下面列出有关部分:
  1. ......

  2. start /min /wait %SystemRoot%\system32\FORMAT.COM B: /FS:NTFS /V:RAMDisk /Q /C /X /FORCE>NUL
  3. if not exist "%ramdrv%\Programs" mkdir "%ramdrv%\Programs"

  4. :load1st
  5. set ProgramFiles=x:\Programs
  6. goto _linkprep

  7. :autoruntag
  8. echo autorun finished at %time% >%SystemRoot%\system32\autorun.tag

  9. :load2nd
  10. for %%i in (x q w e r t y u i o p s d f g h j k l z c v n m) do (
  11. if exist %%i:\programs.wim set _drive=%%i
  12. )
  13. if not exist %_drive%:\Programs.wim goto _linkprep
  14. if not exist "%ramdrv%\Programs" mkdir "%ramdrv%\Programs"
  15. start /min /wait imagex.exe /unmount %ramdrv%\Programs >nul
  16. echo Trying to mount %_drive%:\programs.wim read-write...
  17. start /min /wait imagex.exe /mountrw %_drive%:\programs.wim 1 %ramdrv%\Programs >nul
  18. if not exist %ramdrv%\Programs\PROG_WIM.TAG (
  19. if not exist %ramdrv%\PROG_WIM.TAG (
  20. echo Error. Trying to mount %_drive%:\programs.wim read-only...
  21. start /min /wait imagex.exe /mount %_drive%:\programs.wim 1 %ramdrv%\Programs >nul
  22. )
  23. )
  24. set ProgramFiles=%ramdrv%\Programs
  25. goto _linkprep

  26. ......

  27. :_linkprep

  28. ......

  29. goto autoruntag
复制代码
对于那些有需要对wim进行写操作的人来说,他们应该把Programs.wim放到硬盘中去(或者是IMG/SDI-PE的X:盘)而不是放在光盘。假如你没有对wim的写需要,放在什么地方都不会成为问题。

[ 本帖最后由 khauyeung 于 2007-5-26 12:18 PM 编辑 ]

CXPE1.jpg (27.06 KB, 下载次数: 195)

CXPE1.jpg

CXPE2.jpg (44.54 KB, 下载次数: 155)

CXPE2.jpg

CXPE3.jpg (40.82 KB, 下载次数: 171)

CXPE3.jpg

CXPE4.jpg (48.66 KB, 下载次数: 194)

CXPE4.jpg

CXPE5.jpg (43.58 KB, 下载次数: 188)

CXPE5.jpg
2#
发表于 2007-5-18 13:56:36 | 只看该作者
5. 增加一脚本,使PE可以自动或者手动搜索硬盘、光盘上的Programs.wim或者\Programs外置程序夹。




对WIM格式的PE1.0 PE2.0来说,可以通过硬盘启动,使用所有的程序

PXE没法用
回复

使用道具 举报

3#
发表于 2007-5-18 14:01:47 | 只看该作者
了了好    ,不赞成
回复

使用道具 举报

4#
发表于 2007-5-18 14:06:45 | 只看该作者
有创意哟,下个看看呢!

[ 本帖最后由 潇湘晨光 于 2007-5-18 02:20 PM 编辑 ]
回复

使用道具 举报

5#
发表于 2007-5-18 14:48:18 | 只看该作者
有创意
不知道把PROGRAMS.WIM直接MOUNT到X:\PROGRAMS下效果如何
想了一下,好像不便于添加删除外置程序

[ 本帖最后由 goffi 于 2007-5-18 03:42 PM 编辑 ]
回复

使用道具 举报

6#
发表于 2007-5-18 15:31:38 | 只看该作者
学习中,谢谢分享。^_^
回复

使用道具 举报

7#
发表于 2007-5-18 16:50:50 | 只看该作者
好!!!!!!!!

这个是真正解决了外置程序的方法,占用内存小,外置.WIM文件高度压缩,挂接方式加载!

楼主完善一下下面:
1、在XP/2K3-PE中的ImageX组件,将文件做成单一的压缩包;
2、imageX组件在XP/2K3-PE中的注册表(包括TXTSETUP.SIF文件,若需要的话)
3、挂载.WIM的命令行工具及简单用法说明。

一个完善的imageX组件,在2K3-PE中既解决了外置程序,兼容MS的新一代的系统映像压缩文件,可用imageX展开映像文件来安装/恢复系统,一举多得啊!

[ 本帖最后由 lxl1638 于 2007-5-18 05:04 PM 编辑 ]
回复

使用道具 举报

8#
发表于 2007-5-18 17:26:29 | 只看该作者
好是好,但添加删除程序很麻烦啊.....:P
回复

使用道具 举报

9#
发表于 2007-5-18 17:32:12 | 只看该作者
不要怕麻烦,觉得麻烦是因为使用少,对它的使用方法不习惯,一旦形成习惯就不觉麻烦了。

且学会修改.WIM文件是必要的,MS新一代的压缩映像文件,或者以后的系统封装可能从传统的.GHO转向.WIM了。
回复

使用道具 举报

10#
发表于 2007-5-18 19:25:30 | 只看该作者
新技术啊 有空钻研一下
回复

使用道具 举报

11#
发表于 2007-5-18 19:33:57 | 只看该作者
好方法啊,wim的压缩率ms比rar大
期待lz完善
回复

使用道具 举报

12#
发表于 2007-5-18 19:46:07 | 只看该作者
WIM太难了,我学了N多天都没学会
回复

使用道具 举报

13#
发表于 2007-5-18 20:01:07 | 只看该作者
看介绍不错,弄一个下来学习学习。
回复

使用道具 举报

14#
 楼主| 发表于 2007-5-18 20:18:34 | 只看该作者
原帖由 goffi 于 2007-5-18 02:48 PM 发表
有创意
不知道把PROGRAMS.WIM直接MOUNT到X:\PROGRAMS下效果如何
想了一下,好像不便于添加删除外置程序

把PROGRAMS.WIM直接MOUNT到SDI或者IMG(硬盘类型)的X:\PROGRAMS下是可以的,但MOUNT到ISO(光盘类型)的X:\PROGRAMS下就不行了。这是需要保留RAMDRIVE的重要原因。
回复

使用道具 举报

15#
发表于 2007-5-18 21:24:30 | 只看该作者
学习中,谢谢分享。^_^
回复

使用道具 举报

16#
发表于 2007-5-18 22:25:06 | 只看该作者
不是很懂,不过还是要顶!
回复

使用道具 举报

17#
发表于 2007-5-18 23:01:41 | 只看该作者
好办法,我怎么就没想到呢,困在iso上了,楼主强人,要顶
回复

使用道具 举报

18#
发表于 2007-5-18 23:08:21 | 只看该作者
工程量不小啊~:time:
回复

使用道具 举报

19#
发表于 2007-5-18 23:28:31 | 只看该作者
背景不错,很漂亮:) :)
回复

使用道具 举报

20#
 楼主| 发表于 2007-5-18 23:32:19 | 只看该作者
原帖由 lxl1638 于 2007-5-18 04:50 PM 发表
好!!!!!!!!

这个是真正解决了外置程序的方法,占用内存小,外置.WIM文件高度压缩,挂接方式加载!

楼主完善一下下面:
1、在XP/2K3-PE中的ImageX组件,将文件做成单一的压缩包;
2、imageX组件在XP/2K3-PE中的注册表(包括TXTSETUP.SIF文件,若需要的话)
3、挂载.WIM的命令行工具及简单用法说明。

回应你的建议,把imageX和WimFltr所需的文件和注册表处理整合成组件WimFltr.rar放在顶楼。imageX的使用方法我记得有人详述过,我的中文太菜,不再敖述了。
回复

使用道具 举报

21#
 楼主| 发表于 2007-5-18 23:48:59 | 只看该作者
原帖由 bhdc 于 2007-5-18 05:26 PM 发表
好是好,但添加删除程序很麻烦啊.....:P

:victory: 相对于拆解老毛桃/老九的PE,我认为往Programs.wim添加删除程序是很容易的:Q  !
回复

使用道具 举报

22#
发表于 2007-5-19 08:27:18 | 只看该作者
这一技术太好了,楼主觉得有没有可能把pe核心也用wim压缩了?
回复

使用道具 举报

23#
发表于 2007-5-19 08:50:36 | 只看该作者
有一个XIMAGE图形界面工具
贴上来大家玩玩,这样修改PROGRAMS.WIM就可以想修改IMG文件一样

imagex_gui.part1.rar

94.98 KB, 下载次数: 119, 下载积分: 无忧币 -2

回复

使用道具 举报

24#
发表于 2007-5-19 08:52:12 | 只看该作者
有一个XIMAGE图形界面工具
贴上来大家玩玩,这样修改PROGRAMS.WIM就可以想修改IMG文件一样

imagex_gui.part1.rar

488.28 KB, 下载次数: 243, 下载积分: 无忧币 -2

imagex_gui.part2.rar

488.28 KB, 下载次数: 192, 下载积分: 无忧币 -2

imagex_gui.part3.rar

139.92 KB, 下载次数: 162, 下载积分: 无忧币 -2

回复

使用道具 举报

25#
发表于 2007-5-19 09:12:49 | 只看该作者
imagex有个缺点,打包太慢了
如果用mountrw参数修改,那wim文件又会不断增大不会减小
回复

使用道具 举报

26#
发表于 2007-5-19 09:24:09 | 只看该作者
原帖由 haonan 于 2007-5-19 09:12 AM 发表
imagex有个缺点,打包太慢了
如果用mountrw参数修改,那wim文件又会不断增大不会减小


简单修改添加程序用MOUNTRW
如果砍掉的东西比较多请解包修改后重新打包
回复

使用道具 举报

27#
 楼主| 发表于 2007-5-19 09:31:48 | 只看该作者

回复 #27 haonan 的帖子

我很少直接地用mountrw指令修改wim。我喜欢把用apply指令把wim的内容先拷贝到硬盘,更改完成后再capture一次就成了。以Programs.wim为例,60MB内容才花2分钟。
回复

使用道具 举报

28#
发表于 2007-5-19 10:52:49 | 只看该作者
原帖由 <i>lxl1638</i> 于 2007-5-18 16:50 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=1070370&ptid=105805" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://bbs.wuyou.net/images/common/back.gif');}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
好!!!!!!!!<br />
<br />
这个是真正解决了外置程序的方法,占用内存小,外置.WIM文件高度压缩,挂接方式加载!<br />
<br />
楼主完善一下下面:<br />
1、在XP/2K3-PE中的ImageX组件,将文件做成单一的压缩包;<br />
2、imageX组 ...
<br />
看来目前没有必要使用vistaPE了
回复

使用道具 举报

29#
发表于 2007-5-19 11:12:02 | 只看该作者
有没有成型产品啊。下来观摩一下:lol
回复

使用道具 举报

30#
发表于 2007-5-19 12:25:24 | 只看该作者
挂接硬盘上的wim镜像设成可修改后里面的内容是可写的 而且卸载后会保存到镜像里面
但如果是光盘上的wim镜像 挂接后是否可写呢? 卸载的时候会不会出错?
是否有办法可挂接后内容可写 但卸载后内容不会保存到原镜像里面 这样那些需读写磁盘的软件就不用做成自解压到X盘或B盘的形式了

[ 本帖最后由 philgrim 于 2007-5-19 12:30 PM 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 09:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表