无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 51102|回复: 195
打印 上一主题 下一主题

老毛桃 WinPE 之 DIY 初步(外围篇)

[复制链接]
跳转到指定楼层
1#
发表于 2007-3-27 22:38:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
接触 PE 快一个月了,试图以学习笔记的形式写这个关于 PE 的帖子,如果你愿意,也可以将它当成一篇简单的教程。我只接触过老毛桃的 PE,开始是1111,然后从 0305 到 0325,本文中所述的东西都是基于老毛桃 PE 最新版。

    要 DIY PE,将不可避免的接触到 PE 配置文件,在动手之前,最好先读一下 PECMD 的帮助。PECMD 的帮助花了作者很多时间,一个文本格式的帮助文件能做出如此清晰的表格是很不容易的,因为每一个换行、对齐都需要手工处理(我是这样猜想的,作者自己写个程序完成这个过程也说不定),如果使用了 PECMD 而不读一下帮助,就有些对不起它的作者了。

    读过 PECMD 的帮助,再来看配置文件就很容易了(这里我要对老毛桃提点意见,配置文件没有进行结构化整理,也没有断行处理,读起来不是很方便,好在注释还是比较丰富的。有时间的话,新版本中应该改进),结合注释和 PECMD 帮助将配置文件从头到尾看一遍,肯定能读懂的。其实只要读懂了配置文件,就能够自己做一些简单的 DIY 了。

    本文不涉及任何技术性的东西,期望目的在于让刚接触 PE 的朋友能对 PE 进行简单的修改,以适合自己使用。本文的内容全部散见于本论坛中,我只是根据自己学习的过程,将它们整理到一起而已(有可能我自己认识错误导致后面的内容错误,请高手指正,如果高手们有耐心看的话)。

包含以下几个方面的内容:
      1、增减外置程序
      2、定制登录过程
      3、修改外置程序目录名
      4、修改系统设定(注册表)
      5、添加驱动

需要会使用的几个工具软件:
    1、UltraISO / WinRAR (毛桃PE中已含)
    2、CAB 打包软件 (下载: CAB打包工具.rar (79.8 KB, 下载次数: 4975) )

废话结束,开始啰嗦:

一、增减外置程序

    外置程序在光盘的“外置程序”目录中,对应的配置文件是该目录下的 WinPE.INI
    删除程序只须删除该软件在外置程序目录对应的子目录,再删除 WinPE.INI 中相应的 LINK 创建快捷方式的语句行即可。
    添加程序正好相反,将绿色软件放到外置程序目录中,在 WinPE.INI 中加入相应的 LINK 语句行创建快捷方式即可(参照其它 LINK 语句,复制一行,只须要改一下快捷方式的位置、名称/目标程序的目录名、可执行文件名)。

    这里所说的绿色软件是指能在 PE 中运行绿软,网上所见的大多绿软并不是真正的绿色软件,应该叫准绿色软件或者免安装软件。

    实际上很多并不是为 PE 准备的软件也是可以在 PE 中运行的,用一个笨办法来判断一个普通的绿软是否可以直接在 PE 中运行,启动 PE 环境,找到该软件所在目录,复制一份备份,然后将该目录和目录下的所有文件属性改为只读,直接双击目录内的可执行文件,看能否运行,运行后各项功能都使用一下看是否正常,如无异常,则可按上面的方法简单加入。

    如运行异常,有可能缺某些库文件(这种情况一般有提示),或它在自己的目录内写东西,或依赖注册表中的某些键值,这就需要动点手脚,如准备缺少的库文件,看它自己的目录下有没有配置文件可以修改,在 XP 中运行监视它要读些哪些注册表项。这种情况对不同的软件解决的方法不同,也可能无法解决,不过此种情况超出本文的定位,不再详述。

二、定制登录过程

    这一项改动需要熟悉 PECMD 各命令的用法,读懂配置内外配置文件,最好对系统登录的过程有点了解。
    只作为兴趣,因为老毛桃的登录顺序几乎也没什么可改动的了,可以留给我们定制的就是改改提示句、外置程序的加载方式、调整一下细节而已。
    这一过程会涉及到内部配置文件:
        1、将光盘映像根目录中的 WinPE.IS_ 用 UltraISO 或 WinRAR 提取出来
        2、将名称改成 WinPE.CAB(不改也可以,但用 WinRAR 打开会麻烦点)
        3、用 WinRAR 将其中的 WinPE.ISO 解压出来
        4、用同样的方法,将 WinPE.ISO 中的 WXPE\SYSTEM32\PECMD.INI 提取出来
           (要修改什么文件就提取什么文件,后面的改注册表也要用到此方法)
        5、按自己的需要修改提取出来的文件
        6、将修改后的文件放入 WinPE.ISO 中替换原来的(目录位置一定要相同)
        7、用 CAB 打包工具将 WinPE.ISO 重新打包为 WinPE.IS_
        8、再将 WinPE.IS_ 放到老毛桃的光盘映像中替换原来的
    注:用 UltraISO 修改 ISO 映像文件时最好用另存,以免改错了原来的备份也没有了。

三、修改外置程序目录名

    要改动的地方有 3 个文件 + 1 个目录名:
        1、内部配置文件 PECMD.INI(修改方法见前面说明)
        2、\外置程序\WinPE.INI  (前面的根指光盘映像的根目录)
        3、\WINPE安装\SETUP.INI (老毛桃的安装卸载程序要用它)
        4、外置程序的目录名(这个是当然的)

    将三个 INI 文件提取出来按下面的步骤修改,假设新名为 "NEWNAME":
        1、用记事本打开 INI 文件,将光标定在文件最前面
        2、菜单:编辑-替换...
        3、在“查找内容”编辑框中输入"\外置程序"(不含引号)
        4、在“替换为”编辑框中输入"\NEWNAME"(不含引号)
        5、点全部替换
        6、在“查找内容”编辑框中输入"外置程序\"(不含引号)
        7、在“替换为”编辑框中输入"NEWNAME\"(不含引号)
        8、点全部替换
        9、保存
    用修改后的文件替换下载的光盘映像中原来的(外置程序这个目录的名字可以直接在 UltraISO 中改)

    说得这么麻烦只是为了防止漏改或者将注释也给改了,实际上新版本因采用的 %CurDir% 这个环境变量后,要改的只有几个地方,手工改也是可以的。
   
四、修改系统设定

    这一步主要是指修改 PE 的注册表,可以直接修改PE注册表,也可以修改配置文件。

    1、修改内部注册表的方法:
        用前面修改 PECMD.INI 的方法将内部注册表的文件提取出来:

        \WXPE\SYSTEM32\CONFIG\*.*
        \WXPE\SYSTEM32\SETUPREG.HI_  (这是CAB压缩包,将它解开成 SETUPREG.HIV)

    运行注册表编辑器 REGEDIT.EXE,鼠标点击 HKEY_LOCAL_MACHINE,然后点“文件”-“加载配置单元”,打到提取出来的注册表文件(需要改哪个就加载哪个),打开,提示挂载名时随便输入取一个名字如“WinPE”,展开 HKEY_LOCAL_MACHINE 后里面就有一项 WinPE,然后就跟普通的注册表操作一样了,改好后用鼠标点一下 “WinPE”项目,然后“文件”-“卸载配置单元”,这个文件就改好了。
    用改过的注册表文件替换原来的。

    2、修改配置文件的方法:

    对于普通的不依赖于外置程序目录结构的注册表项目,可以用常规方法将修改项写成 REG 文件(可以直接从 XP 系统中导出,然后在其基础上修)。在外置程序目录下有个 RegDoc.cmd,这个文件是毛桃用来注册外置程序文档关联的(就是改注册表),可以用记事本打开它,加入一行:
    REGEDIT /s REG文件名
    则 PE 加载外部配置时它会自动导入。

    这是最简单的改注册表的方法。但是如果要修的项依赖于外置程序的目录结构(比如要在右键菜单中添加用 UltraEdit32 打开),就不能用上面的方法了,因为外置程序的绝对路径是不确定的(不同的机器中盘符不能确定)。

    这种情况就需要用原始的 REG 命令来做了(就跟毛桃在REGDOC.CMD 中的做法一样),这个命令的语法比较艰涩,且注册表键值的表示方法跟 REG 文件不同。在命令提示符下通过 /? 参数可以获得它的用法(中文的哦),提醒一下 /? 参数是个以多层使用的,如 REG /? 得到的是基本参数的说明,如用 REG ADD /? 则可得到 ADD 这个参数的用法……

    有了这个命令的基础后,我们来看看是怎么解决不定路径问题的。

    在 REGDOC.CMD 中有一个环境变量 %TP%,代表的是 REGDOC.CMD 这个文件所在的路径。我们可以通过 %TP%\..\ 表示它的上层目录,%TP%\..\..\ 表示它的上两层目录。用此方法可以索引到外置程序目录内的所有路径,而不用考虑外置程序目录本身的绝对路径。

    (还有个方法就是在 WinPE.INI 中用 PECMD 的 REGI 命令一行行添加,这个比系统的 REG 命令好理解些,同样可以用 %CurDir% 环境变量来索引外置程序目录内的所有路径)

    直接修改的好处是启动 PE 就是所需要设置,不依赖外部配置文件,PE 的加载速度也比较快,但麻烦。修改配置文件则比较简单,但要依赖配置文件加载过程(直到加载到那些语句时才会生效),启动时需要额外的时间加载,相当于给系统打补丁去修改默认设置。

    一般情况下不推荐直接修改PE注册表,麻烦,重新打包也比较花时间。但有些跟系统紧密的键必须直接修改才有效,比如屏幕分辨率,虽然在外面也可以修改有,但在登录时加载到它之前是无效的,那么在登录的过程中屏幕就会因切换分辨率而闪烁。

    自己修改注册表的前提是自己要知道所希望的改变要修注册表中的哪些键值。可以上网搜索,现在网上的这些资源多得是,实在找不到的话可以还可以用 RegMon 之类的注册表监视软件来定位。
    比如修改记事本的自动换行,又不知道相应的键值在哪。可以先开启 RegMon,然后在记事本中改变换行的选项,看 RegMon 的监视结果,来定位是哪个键值。因为系统本身也在不断的更改注册表,RegMon 中的显示会很多,但是通过不断的改变记事本中的设置,最终是可以找到的,这个过程需要的是耐心和细心。

五、添加驱动

    在外置程序目录中有一个比较重要的目录“PE_OUTERPART”,核心的外置组件都放在这里。里面有 4 个 CAB 压缩包,分别是 网卡/无线网卡/声卡/显卡 驱动包,而且加载的框架都已经搭好了,在 cmd 脚本中会自动调用 INFCACHEBUILD.EXE 处理驱动程序。我们要做的工作就是获取驱动程序文件,将它们放到相应的驱动包中。

    从本机上获取驱动文件有很多驱动备份工具,我用的是最笨的方法,在设备管理器中查看驱动程序详细信息,然后一个个复制文件,建一个目录,放到相应的驱动包中。

    中间有一个步骤,就是改一下复制出来的inf文件的名称,让它按文件名排序时可以排在最前面(我就是在文件名前面加了个下划线)。我不知道这一步是否是必须的,因为当初不知在哪个帖子中零星的看了点,没有仔细研究,我做的时候就老老实实改名了。

    这样提取出来的驱动文件可能很大,测试成功后再删除一些不必要的驱动文件。有很多文件是可以删除的,可以参考原驱动包中同类驱动的文件,将类似的文件保留,其它删除。另一个笨办法是一个个删除,每删除一个测试一次,最终找到一个最小的驱动文件子集。

=================================================
    完了,以上过程就是我近一个月来学习 PE 的过程,可能写得不够详细,希望对刚接触 PE 又想自己动动手的朋友有所参考。或者其中存在原则性的错误,那就只能等高手来指正了。

[ 本帖最后由 tuxw 于 2007-4-10 10:44 PM 编辑 ]

评分

参与人数 1无忧币 +20 收起 理由
打狗协会理事 + 20 我很赞同

查看全部评分

2#
发表于 2007-3-27 23:26:16 | 只看该作者
不错的东西,值得学习!
回复

使用道具 举报

3#
发表于 2007-3-27 23:31:36 | 只看该作者
得花点时间看,刚接触启动盘,只能慢慢学,有没有关于启动盘得基础教程啊
回复

使用道具 举报

4#
发表于 2007-3-27 23:33:25 | 只看该作者
不错不错。copy下来慢慢看
回复

使用道具 举报

5#
发表于 2007-3-27 23:35:45 | 只看该作者
好东西,学习下
回复

使用道具 举报

6#
发表于 2007-3-28 00:04:55 | 只看该作者
不错,加分加亮。
回复

使用道具 举报

7#
发表于 2007-3-28 00:25:15 | 只看该作者
copy下来慢慢看,谢谢楼主分享心得。
回复

使用道具 举报

8#
发表于 2007-3-28 02:31:18 | 只看该作者
收藏一下,慢慢看。。。。。
回复

使用道具 举报

9#
发表于 2007-3-28 07:45:57 | 只看该作者
写得不错,谢谢楼主。
回复

使用道具 举报

10#
发表于 2007-3-28 08:01:37 | 只看该作者
真的很不错,谢谢!
回复

使用道具 举报

11#
发表于 2007-3-28 08:14:02 | 只看该作者
真的很好,对于自己定制PE很有帮助,谢谢
回复

使用道具 举报

12#
发表于 2007-3-28 08:18:09 | 只看该作者
楼主真细心无私分享自己的学习成果
这种精神值得学习和赞扬
支持了,收藏学习了:)
回复

使用道具 举报

13#
发表于 2007-3-28 09:06:47 | 只看该作者
真的不错,学习了,准备自己实验一下。
回复

使用道具 举报

14#
 楼主| 发表于 2007-3-28 09:18:27 | 只看该作者
原帖由 zwing55 于 2007-3-27 11:31 PM 发表
得花点时间看,刚接触启动盘,只能慢慢学,有没有关于启动盘得基础教程啊


在启动盘专栏里有非常详细的启动盘文章啊
回复

使用道具 举报

15#
发表于 2007-3-28 09:25:02 | 只看该作者
要花点时间学习下了,谢谢啊
回复

使用道具 举报

16#
发表于 2007-3-28 09:38:51 | 只看该作者
很全,支持一下
回复

使用道具 举报

17#
发表于 2007-3-28 09:59:49 | 只看该作者
但是改了之后启动的时候会弹出那个"此PE已被修改……“的对话框,怎么把那个对话框去掉呢
回复

使用道具 举报

18#
发表于 2007-3-28 10:01:46 | 只看该作者
十分感谢作者提供这些信息,帮助了想学习的朋友,应该得到赞扬和提倡。
回复

使用道具 举报

19#
发表于 2007-3-28 10:01:55 | 只看该作者
楼主通过一个月的学习和研究能有如此大的收获,不愧是一位高才!
谢谢共享,全文收下。
回复

使用道具 举报

20#
发表于 2007-3-28 10:10:52 | 只看该作者
原帖由 枯木 于 2007-3-28 09:59 AM 发表
但是改了之后启动的时候会弹出那个"此PE已被修改……“的对话框,怎么把那个对话框去掉呢

早期版本在xpeset里加了验证,新版本已经没这个问题。
回复

使用道具 举报

21#
发表于 2007-3-28 10:12:46 | 只看该作者
谢谢LZ,我刚好开始研究PE,这篇文章对我帮助很大~
回复

使用道具 举报

22#
发表于 2007-3-28 10:13:49 | 只看该作者
好东西,收藏了慢慢看
回复

使用道具 举报

23#
发表于 2007-3-28 10:21:17 | 只看该作者
收藏一下,好好学学呢,谢谢了!
回复

使用道具 举报

24#
发表于 2007-3-28 11:35:21 | 只看该作者
不错的东西,很值得学习!
回复

使用道具 举报

25#
发表于 2007-3-28 11:42:11 | 只看该作者
论坛终于有这样浅显易懂,可操作性强的文章了。
谢谢!
回复

使用道具 举报

26#
发表于 2007-3-28 11:49:41 | 只看该作者
那位高手或者斑竹再帮忙完善一下,比如把驱动中不是自己电脑的驱动删除,只保留或者添加自己电脑的驱动,这样PE体积也就小了好多,在加入或者修改外置程序,那就作出比较适合自己电脑的PE了!!
回复

使用道具 举报

27#
发表于 2007-3-28 13:13:32 | 只看该作者
原帖由 gyjyxj 于 2007-3-28 11:49 AM 发表
那位高手或者斑竹再帮忙完善一下,比如把驱动中不是自己电脑的驱动删除,只保留或者添加自己电脑的驱动,这样PE体积也就小了好多,在加入或者修改外置程序,那就作出比较适合自己电脑的PE了!!


用它提取本机的驱动,用XCAB处理打包,替换原包即可

dd.rar

234.25 KB, 下载次数: 164, 下载积分: 无忧币 -2

回复

使用道具 举报

28#
发表于 2007-3-28 13:44:05 | 只看该作者
不错,来顶一个!
回复

使用道具 举报

29#
发表于 2007-3-28 14:06:51 | 只看该作者
提供本人的YY思路
从维护角度出发:取掉启动过程中设置虚拟内存,启动后视待维护机的实情,再行确定
以内存来确定启动EXE文件,内存足,启动它,不足则建立醒目的快捷方式和启动过程的提示
   如1:ENVI TMP_DT=设置虚拟内存 本机内存<256MB
          IFEX MEM>60,LINK %QuickLaunch%\设置虚拟内        
          存,%ST%\SETPAGEFILE.EXE!LINK          %Desktop%\%TMP_DT%,%ST%\SETPAGEFILE.EXE
          ENVI TMP_DT=
   如2:ENVI TMP_M=%CurDir%\PE_OUTERPART\MMC.EXE
    ENVI TMP_W=%CurDir%\FREEWB\FREEWB.EXE
    ENVI TMP_M1=TEXT 磁盘管理 MMC..........OK #0xFFFFFF L50 T190 R700 B550 $14*
    ENVI TMP_W1=TEXT 极点五笔 WB ..........OK #0xFFFFFF L50 T210 R700 B550 $14*
    ENVI TMP_M2=TEXT 内存不足 磁盘管理 MMC......NO #0xFF L50 T190 R700 B550 $14*
    ENVI TMP_W2=TEXT 内存不足 极点五笔 WB ......NO #0xFF L50 T210 R700 B550 $14*
   
    IFEX MEM>60,TEAM EXEC =%TMP_M%|%TMP_M1%!LINK !%StartMenu%\安装MMC,%TMP_M%|%TMP_M2%
    IFEX MEM>60,TEAM EXEC =%TMP_W%|%TMP_W1%!LINK %Programs%\文件工具\极点中文,%TMP_W%|%TMP_W2%
    TEAM ENVI TMP_M=| ENVI TMP_M1=| ENVI TMP_M2=| ENVI TMP_W=| ENVI TMP_W1=
   如3:TEXT 按内存条件 进行 显卡 程序的驱动......#0xFFFFFF L50 T250 R700 B550 $14*
    ENVI TMP_V=LINK !%StartMenu%\启用显卡支持,%CurDir%\PE_OUTERPART\Start_VGA.CMD,,%CurDir%\PE_OUTERPART\Outer_Base.EXE
    IFEX MEM>80,TEAM EXEC @=%CurDir%\PE_OUTERPART\Start_VGA.CMD !%TMP_V%|TEXT 内存不足,加载驱动失败......#0xFFFFFF L50 T250 R700 B550 $14*
    ENVI TMP_V=

这样只要设定好MEM的条件,就是确定启动后的应用环境 ,以便更好的适应维护需要,维护模式最好不要自动启动显卡和声卡的驱动,因其驱动精减,其适应性差,如本地硬盘上使用,最好提取本地的驱动程序,用XCAB处理打包替换即可,若要小内存启动,最好将IS_ 改成ISO格式,可降低启动内存的要求
回复

使用道具 举报

30#
发表于 2007-3-28 14:13:46 | 只看该作者
不错,学习一下。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-27 05:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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