首先,要DIY,就要掌握一个大概的原理,这里说的只是大概。那么PE是如何运作的?其实PE的文件从粗略来分,可以分为核心和外置程序两个部分,相信外置是大家所关心的,但是这里要先讲核心,因为外置是在一定程度上依赖核心的。
PE的核心格式可分为三种ISO格式,NTFS IMG格式,FAT IMG格式,这三种格式有什么不同先不用管,先讲一下PE的运作
PE其实就类似一个未安装的系统(只是类似,还是有区别的),PE的系统文件就在PE的核心中,PE启动时,会先将一部分内存当作硬盘来使用,我们暂且可以称其为Ramdisk盘,当Ramdisk盘设置好了,就会根据核心中的txtsetup.sif文件的设置来进行“安装”,也就是把核心中的文件释放到Ramdisk盘当中,也就是PE启动后我们所看到的X盘。当PE“安装”好后就可以进入PE了。
接下来,在进入PE的桌面前,会根据x:\I386(或WXPE或其他文件夹名)\system32\PECMD.INI文件来进行PE的一些设置,和调用外部配置文件。而外部配置文件就是和外置程序有关的了。
PE的启动过程基本就这样(不包括引导过程),接下来要讲讲X盘大小的设置问题,X盘正如上面所说的,是PE的系统文件所在地,那么在调整X盘的大小前弄明白调整它的意义,举一个简单的例子,假如一个PE的系统文件一共有60M,而X盘的大小只有61M,那么就有1M的空间剩余。假如你想启动网络,那当然是要先安装网卡驱动。而网卡驱动当然不只1M那么小,这样说来,X盘的剩余空间就不足够你安装网卡驱动。那么网络就会无法启动,假如我把X盘调整到70M,那么10M的剩余空间就足够安装网卡驱动了。
那么现在,结果出来了,当你的外置程序中含有需要解压到核心的东西时,例如驱动,则核心中就必须预留空间。那么意义明确了,不同的PE,核心就需要进行相应的调整,这样才可以达到最大利用率。
ISO核心PE的X盘大小调整方法(以毛桃0911为例)
找到核心文件WINPE.IS_,用WINRAR打开,把里面的WINPE.ISO提出来.用ULTRAISO打开WINPE.ISO,找到WXPE\SYSTEM32\PECMD.INI文件,看到FBWF这行,这条命令就是用来设置X盘大小的,不需要懂原理,会用就可以了.
命令参数如下:
FBWF [P可用内存百分数] [L最小值] [H最大值]
FBWF P20 L32 H64
三个参数都可单独使用,如 FBWF L64 表示强制设置 64M 的 FBWF;FBWF命令必须在 MOUN 命令之后
这样就可以设置X盘的大小了,把修改后的ISO保存,再用CAB压缩就OK.
IMG核心中X盘大小调整方案
一.FAT IMG X盘调整方案
1.类似ISO一样调整FBWF(不过FBWF+IMG+卡巴=蓝屏,并且FBWF不太稳定),方法是先用WINRAR解压后缀为IM_的文件,把里面的IMG后缀的文件解压出来,然后用VDM加载
,同样找到WXPE(这个文件夹名能会有点变化,不同的PE可能不同)\SYSTEM32\PECMD.INI,调整好后,卸载镜象.再用CAB压缩.
2.直接建立所需要大小的IMG(即X盘需要70M就建立70M大的IMG,并关闭FBWF)
假设我的PE的系统文件为60M,那么我要建立一个70M的IMG,则先打开VDM,建立一个70M的IMG,如图
然后加载IMG-----格式化为FAT格式---把PE的文件都复制进去---卸载IMG-----在如上图最右边的压缩按钮。
这里还要再提一下,表面上PE的系统文件为60M,PE核心大小为70M,那么就多了10M空间,但启动后,X盘的剩余空间会比10M要大一些,这是因为启动后会删除一些启动后就没用的文件,例如SRS驱动等。
二.NTFS IMG X盘调整方案
1.用FBWF(方法和FAT IMG一样,但也会蓝屏)
2.建立所需大小的IMG(和FAT IMG有所不同,请注意),因为是NTFS格式的关系,所以我们可以起用NTFS压缩来自动压缩核心中的文件,例如,60M的文件,经过NTFS压缩后就变成了48M。那么我们建立核心只要52M就可以放下原来是60M的文件。
过程是这样的:建立一个50M的IMG-----格式化为NTFS格式-----启用NTFS压缩,如图
接下来到了关键的一步,就是复制文件,这里和FAT IMG的复制不同,FAT IMG是一次全部复制过去就可以了,但NTFS IMG不可以。
首先把SYSTEM32目录以外的目录先复制过去,SYSTEM32目录里的文件要几个一批慢慢复制,遇到体积较大的文件如SHELL32.DLL,一次复制一个,假如遇到提示磁盘空间不足,则卸载IMG,重新再挂载再继续复制,直到所有文件都复制完毕。复制完成后就可以卸载IMG了,然后把后缀名改为IM_,这里不要用CAB压缩,具体原因看下面PE启动内存的计算。
PE启动内存计算
PE的启动内存和核心有关,大概为下面这个公式(只是大概)
1.用CAB压缩过的核心
X*2+16(单位MB)(X为未压缩时的核心大小)
2. 不用CAB压缩的核心
X+32(单位MB)(X为未压缩时的核心大小)
这里就可以解释为什么NTFS IMG的核心一般不用CAB压缩,因为NTFS IMG格式的核心用CAB压缩效果很差,压缩率低,例如:50M的NTFS IMG用CAB压缩后才35M,而70M(里面有60M的文件)的FAT IMG用CAB压缩后,体积变成了26-29M左右。所以NTFS IMG不用CAB压缩,体积减小不多,而启动内存要加倍,因小失大
关于安装配置文件txtsetup.sif的简单说明
相信玩过精简版系统的朋友都知道这个文件的用途,同样PE里也有这个文件,这也是为什么我在文章一开始把PE比喻成类似未安装的系统,废话不多说,我就简单讲讲这个文件。
[WinntDirectories]
这个字段是用代码表示文件拷贝的目标文件夹,其根目录为%WinDir%即安装指定的Windows文件夹。
[SourceDiskFiles]
根据前面设定的代码表示文件拷贝的具体细节。
下面三段为集成SATA SCSI等驱动时所用
[HardwareIdsDatebase]—硬件标识
[SCSI.load]——SCSI驱动加载
[SCSI]??——SCSI设备说明
添加srs驱动实例
◇在PE中添加sata,raid驱动的方法:(这里以Intel Matrix Storage Manager driver为例,以便于说明,以下描述的驱动文件名只基于本实例,实际操作中的具体的文件名称以需要添加的具体驱动为准)
一. 准备材料:1.原版驱动文件
2.从PE中提取的txtsetup.sif文件
二. 从PE中提取txtsetup.sif文件:
先将PE中的winpe.is_重命名为winpe.cab,然后用RAR解压出winpe.iso
用UltraISO打开它,将txtsetup.sif提取出来,并用记事本打开备用。
三. 修改txtsetup.sif文件
1. 打开驱动包,里面有一个扩展名为“.inf”或“.oem”的小文件,如“oemsetup.inf”或者“txtsetup.oem”等(本例中为“txtsetup.oem”),用记事本打开备用;
2. 在txtsetup.sif中查找[SourceDisksFiles]字段,在其下添加iaStor.sys=1,,,,,,4_,4,1,,,1,4
3. 查找[SCSI.Load]字段,在其下添加iaStor=iaStor.sys,4
4. 切换到刚才打开的txtsetup.oem,查找HardwareIds关键字,将该字段下的代码全部拷贝到txtsetup.sif文件的[HardwareIdsDatabase]字段末尾,但需要更改一下代码的格式,比如将id = "PCI\VEN_8086&DEV_27C3&CC_0104","iaStor"改为PCI\VEN_8086&DEV_27C3&CC_0104=iaStor
5. 查找[SCSI]字段,在其下添加iaStor="Intel(R) 82801FBM SATA AHCI Controller (Mobile ICH6M)"
至此,修改txtsetup.sif文件部分完成,将修改后的sif文件替换原来的文件。
四. 复制驱动文件
将驱动文件iaStor.sys用makecab.exe压缩成iaStor.sy_并添加到PE的system32\DRIVERS目录下,然后将修改后的winpe.iso用makecab.exe重新压缩成winpe.is_替换原来的文件。
至此整个添加驱动工作完成,重启动以测试成功与否。
关于更详细的txtsetup.sif的用法,可以到精简区搜索,那里有不少教程,我这里就不多说了。
关于修改PE的注册表
要DIY核心,修改注册表是肯定要会的,先找到SYSTEM32目录下的setupreg.hi_,用WINRAR打开把里面的setupreg.hiv解压出来。打开开始菜单---运行----输入regedit,用鼠标选中HKEY_LOCAL_MACHINE项,然后单击文件---加载外部配置文件(如图)
然后找到刚刚的那个setupreg.hiv加载,然后提示项名称,这里随便填,我填!方便区分。
之后,你就可以修改!项里的注册表了,!项里的就是PE的注册表,修改完了后不要忘记卸载配置单元,选中!项,按文件—卸载配置单元。最后用CAB把修改好的setupreg.hiv文件压缩再替换原文件即可。
winPE 核心修改教程(二)
【光盘映像修改方法】
使用 UltraISO 可以打开 ISO 格式的光盘映像,并可删除、替换、添加光盘映像的内容。
执行下面的各项修改时,通常都是先用 UltraISO 打开光盘映像,再将要修改的文件拖放到硬盘的某个临时目录(最好同时再拷贝一个备份!),然后按下面的方法进行修改。
修改完毕,把改好的文件拖入 UltraISO 打开的 ISO 映像的对应目录,然后点击保存即可。
★注意★:
UltraISO 配置极其重要,否则光盘可能不能正常引导!!!
在“文件”菜单的“属性”对话框中,要选中的项目如下:
“优化文件”(可选。推荐选中)、“ISO 9600”、“Max(211)”、“省略 ISO 9600 版本号”、“标准”。其他的选项一律不要选择!切切!然后点击“设置为缺省”。
【基本引导原理】
本光盘完全结构化,PE系统与应用程序完全分离,由系统引导时自动通过已经内嵌到 PE 中的 XCMD.EXE 命令自动调用系统 WINS\System32 目录中内置的 XCMD.INI 完成 PE 环境的初始化工作,并且在初始化过程中如果检测到光盘根目录下存在外置的 XCMD.INI 配置文件,则自动调用外置 XCD.INI 配置文件来完成外挂程序的初始化及注册过程,继而引导到 PE 系统图形化桌面。
【光盘目录结构】
X:\ 光盘根目录(X: 为光盘盘符,下同)
├─WINS 系统目录(不要动)
└─PROGRAMS 外挂应用程序目录(名称不要改)
├─System 系统相关配置工具和文件存放目录(用于集中存放系统相关的全局性工具和文件)
├─System\DRIVERS 外挂驱动包目录
├─System\DLL 公用外挂动态链接库文件目录
├─TOTALCMD 优秀的文件管理器 Total Commander
├─WINDOWS系统维护 维护硬盘上的 Windows 的相关工具
├─WinTools 用于集中存放仅适合硬盘 Windows 环境使用的工具,PE下可能用不着的,因此用专门目录再次分离
├─光盘工具
光盘编辑及刻录工具
├─克隆备份 硬盘克隆备份与恢复工具
├─图形图像 看图、图像处理
├─数据恢复 数据恢复工具
├─文本编辑 文档编辑、查看、转换等相关工具
├─硬件检测 硬件检测工具
├─磁盘工具 磁盘系列维护工具(因使用频繁较高,故单列)
├─系统检测 当前系统环境检测、比较。供PE下测试和分析软件等使用
└─网络工具 各种上网相关工具
【内置变量名称与含义】
%Favorites% 收藏夹目录
%Desktop% 桌面目录
%StartMenu% 开始菜单目录
%Startup% 启动菜单目录
%Programs% 程序菜单目录
%SendTo% 发送到目录
%Personal% 我的文档目录
%QuickLaunch% 快速启动目录
%CurDrv% 当前驱动器盘符
【DIY 基本步骤】
①添加或删除工具:向 \Programs 目录中添加你自己的程序目录(或删除现有的程序目录)。注意目录中已经按工具功能进行了分类,强烈建议分类存放工具,并且一个工具占用一个自己的子目录,不建议将多种工具同时混合在一个目录,以免造成日后维护不便/
②PE 光盘开始菜单 DIY:用记事本打开 \XCMD.INI,根据该文件中现有的内容的格式添加自己的菜单或删除现有菜单。
开始菜单的各项目可使用环境变量(各变量代表的意义见上述说明。下同)。
例:
LINK %Desktop%\Internet Explorer,%CurDrv%\Programs\网络工具\TheWorld\TheWorld.exe,,%CurDrv%\Programs\网络工具\TheWorld\Theworld.ico
各部分说明:
LINK ……创建快捷方式命令,不能改
%Desktop% 表明是在桌面创建快捷方式。%Desktop% 变量名不能改,除非你另有指定。
\Internet Explorer 在桌面上显示的快捷方式名称
%CurDrv%\Programs\网络工具\TheWorld\TheWorld.exe, 快捷方式对应的目标程序路径。
, 这个逗号分隔的内容是程序运行参数。如果不带参数运行则留空。
%CurDrv%\Programs\网络工具\TheWorld\Theworld.ico 图标路径。如果用程序本身的图标,则不用指定。
菜单条目每条分别占一行;注释内容请以 // 打头。
各种菜单命令的详细说明,请双击 XCMD.EXE 后获取。Xcmd.exe 程序的最新版本下载:
http://bbs.wuyou.com/viewthread.php?tid=91524&extra=page%3D1 (修改版)
或:
http://bbs.wuyou.com/viewthread.php?tid=89558&extra=page%3D2 (原版)
③设置程序注册:因PE中的程序均是外挂的,因此PE系统启动时要对某些需要注册的软件进行注册。
如果你添加的工具需要向注册表写入注册信息,请自己写好注册表注册脚本,或者提取 REG 格式的注册表文件,存放到该程序所在的相同目录。
然后在
\Programs\System\RegApp.cmd
这个统一注册脚本中调用即可。比如:
用记事本打开 X:\PROGRAMS\System\RegApp.cmd
仿照如下的格式添加调用你新建的批处理命令:
call %D%\Programs\磁盘工具\WINIMAGE\WINIMAGE.cmd
具体把上述“Programs\磁盘工具\WINIMAGE\WINIMAGE.cmd”中的内容改成你的批处理文件的真实路径即可,“call %D%\”默认不用修改。
注册脚本可以使用 CMD 批处理格式,也可以使用 regedit /s XXX.reg 的注册表自动导入注册的格式,具体可参照下文“注册脚本生成方法”完成注册脚本制作。
注册命令每条分别占一行,可参照现有的命令格式写入,注意路径不要使用本地硬盘上的绝对路径,而必须使用相对路径或者使用上面提供的环境变量!
如果你要删除现有的程序,也请打开上述 RegApp.cmd 调用脚本,查看是否有该程序的注册命令,有则删除。
【注册脚本生成方法】
1、使用 Regsnap 等在标准的 Windows 环境下跟踪分析出软件要添加到注册表中的内容,然后将注册表修改条目导出,并改写成批处理文件,保存到软件所在的目录中。
比如对 ACDSEE 这各程序的注册信息跟踪后就保存在:
X:\PROGRAMS\图形图像\ACDSEE\ACDSEE.CMD
建议参照 X:\PROGRAMS\图形图像\ACDSEE 这个程序的保存方式保存你要添加的软件,原则是与主程序集中到相同目录存放(包括可能要用到的图标文件),以便日后维护修改。并参照 其中的 ACDSEE.CMD 这个注册批处理的格式和样式创建你自己应用程序的注册批处理文件。
注意:为了保证 PE 环境和标准 Windows 环境下调用这些脚本都能够运行,因此我们要检测程序所在的实际路径或所在的盘符。
创建批处理时,最前面的两行就是用于检测当前目录位置的,要保留并引用其中的变量:
SET Var0=%0
FOR /f "delims=" %%I in ("%Var0%") do Set OP=%%~dpI
上述两行的作用是通过检测当前批处理所在的路径获得所在分区的盘符,从而在后面的批处理中使用 %OP% 作为外挂程序路径中要使用的所在的分区号。 %OP% 只与所在的盘符相关,与路径无关,因此你的批处理中要在盘符变量 %OP% 后加上详细的路径。比如:
REG ADD HKCR\ACDC_JIF\Shell\ACDSEEen\Command /ve /t REG_SZ /d "\"%OP%ACDSEE.EXE\" /v" /f>NUL
上述命令可在注册表中添加一条注册信息。
注意:当上述路径检测命令中,Set OP=%%~dpI 时,变量 %OP% 后面不必再添加“\”。如上面的 %OP%ACDSEE.EXE 。
也可使用 Set OP=%%~dI,与上面相比,仅仅是将其中的 ~dpI 改成了 ~dI,此时变量将不扩充到当前路径,而只扩充到当前盘符。因此如果这样使用,你必须在变量后加上程序的完整路径。比如:
%OP%\PROGRAMS\TOTALCMD\RUNTC.EXE
【外挂驱动】
PE 不能驱动你的网卡或声卡等是完全正常的,因此你可能需要把自己的硬件的驱动文件 DIY 进来。
①驱动的打包压缩:
将提取的驱动程序(包含有 inf 安装信息文件的那种,而不是通过 Setup.exe 安装的那种)制作成 CAB 格式压缩包,统一存放到光盘 \Programs\Drivers 目录下。
注意:
在 CAB 中,把每个驱动单独放在一个目录中,并保证 CAB 中 INF 文件总是在当前目录的最前面(可在inf类型的文件前面加数字0以实现排序在最前),且 CAB 中的 INF 文件必须经过处理。
②用记事本打开光盘映像根目录下的 XCMD.INI,在尾部可找到类似以下的命令行:
DEVI $%CurDrv%\Programs\DRIVERS\DRV_VGA.cab
在这后面把你自己添加的驱动也按照上述示例添加进去即可。
【外挂动态链接库】
光盘 Programs\System\Dll 目录为公用外挂动态链接库目录,用于存放某些程序要用到的动态链接库文件,如 Msvbvm60.dll 等;如果你添加的新程序需要外挂动态链接库支持,可以存放在这个目录,其中的脚本会在 PE 启动时自动注册这些外挂库(某些不能采用 Regsvr32 注册的则不能放在这个公用外挂目录,而必须放在你的程序所在目录)。
如果你的标准 Windows 环境缺少一些动态链接库,则也可以从光盘菜单中选择安装它们到硬盘上的 Windows 系统。
【PE 映像的修改】
本光盘的 PE 系统保存在 \WINPE.IM_ 这个 CAB 格式的压缩包中。修改方法:
① 用 CabManager 或 WinRAR 打开 \WINPE.IM_ 这个压缩包,从中可提取 WinPE.IMG 这个硬盘映像文件。
② 用本光盘 \PROGRAMS\光盘工具\VDM\VDM1.EXE 这个路径下的 VDM1 程序(可提取后直接运行),加载上面提取的 WINPE.IMG,并给它分配一个盘符,比如 X: 盘。如果你打算修改它就要注意不要选择只读。注意暂时不要退出 VMD 虚拟磁盘程序!
③ 向上述加载好的盘符(如 X:)如硬盘一样进行各种修改操作。由于修改 PE 系统可能会导致 PE 系统不可用,因此建议你在修改前事先保留备份!
④修改完毕,关闭所有已经打开的 虚拟磁盘窗口(如 X: 盘已经的打开的所有窗口),切换到 VDM 虚拟磁盘程序窗口,选中虚拟磁盘后再点击“卸载”。此时所有的对虚拟磁盘映像的修改就会得到保存。
⑤使用 CabManager ,将修改后的 WINPE.CAB 拖入 CabManager 窗口,然后选择“保存”按钮,即可重新把 WINPE.IMG 这个 PE 的硬盘映像文件重新保存为 WINPE.IM_。其实扩展名 .IM_ 主要是与 CAB 格式压缩包的默认扩展名保持一致而已。如果你要修改这个扩展名,则必须用记事本同时修改光盘根目录下的 WINPE.SIF 文件,将其中的“WinPE.IM_”改成与你保存的映像压缩包对应的文件名才行。
【光盘个性化信息】
光盘个性化信息的修改均可通过光盘根目录下的 XCMD.INI 进行。用记事本打开光盘根目录的 XCMD.INI,有关命令及含义如下:
①登录画面(用自己的图片替换对应路径下的同名文件,或者修改文件路径指向你自己的图片文件均可):
LOGO %CurDrv%\Programs\System\Logon.jpg
②系统用户名(等号“=”后面的内容即所有者信息。等号前面的不能改):
REGI HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOwner=Administrator
③系统单位组织名(等号“=”后面的内容即所有者信息。等号前面的不能改):
REGI HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization=Microsoft Commander
④桌面墙纸(用自己的图片替换对应路径下的同名文件,或者修改文件路径指向你自己的图片文件均可):
REGI HKCU\Control Panel\Desktop\Wallpaper=%CurDrv%\Programs\System\Desktop.jpg