WIN PE制作教程 一.docx
《WIN PE制作教程 一.docx》由会员分享,可在线阅读,更多相关《WIN PE制作教程 一.docx(52页珍藏版)》请在冰豆网上搜索。
WINPE制作教程一
PE制作教程
1.序言
感谢您观看本教程,本教程将循序渐进地教您制作PE。
本教程是根据网友地描述,微软帮助文档以及个人经验来写的,在这里感谢原作者!
因为本人水平有限,教程中难免有些不足之处,也希望恁的指正,谢谢!
1.WindowsPE入门基础知识:
WindowsPE的作用、命名规则、启动方式
2.WindowsAIK的初步安装与使用
3.PE的基本制作步骤
4.对PE的初步DIY
5.添加explorer
6.对注册表的最后修改及添加主题
2.教程
2.11.WindowsPE入门基础知识
1.WindowsPE入门基础知识:
WindowsPE的作用、命名规则、启动方式
1.1WindowsPE的作用
WindowsPE的全名是WindowsPreinstallationEnvironment(WinPE)直接从字面上翻译就是“Windows预安装环境”。
微软的本意是:
WinPE仅用做系统维护,并设置了各种限制。
可以简单的理解为:
PE是Windows系统的超级精简版、超级权限版(以系统system账户登录)!
对于无法进入系统、修复系统、分区、重装系统等问题都可以进入PE进行操作,因此PE是系统维护强大的武器!
微软原版的PE,只有“命令行”即DOS窗口。
网上流传的各种版本都是“高手们”修改出来的,甚至有的PE可以作为系统来使用,这都偏离了微软的本意。
我不主张“肆意扩展”PE的功能来彰显“技术”,但是“可视化操作界面、常用功能的集成”这些都是必要且必须的,我会在以后的文章中逐一解说。
通常PE启动有两种方式:
1.加载到内存2.直接在某个介质(例如光盘)启动。
两种方式各有利弊:
加载到内存就会对内存大小要求高;直接在某种介质启动速度就会减慢。
但是就如今电脑配置飞速发展的趋势来看,内存大小已经不是限制因素,因此多数是以“加载到内存”的方式启动。
1.2WindowsPE的命名规则
WindowsPE1.x表示WindowsXP内核。
(x表示系统版本,例如SP1)
WindowsPE1.5表示Windows2003内核。
(x表示系统版本,例如SP1)
WindowsPE2.x表示WindowsVista内核。
(x表示系统版本,例如SP1)
WindowsPE3.x表示Windows7内核。
(x表示系统版本,例如SP1)
WindowsPE4.x表示Windows8内核。
(x表示系统版本,例如SP1)
举例:
PE1.3表示WindowsXPSP3内核的PE。
WindowsPE1.x(1.5类似)引导过程(以网上常见的PE为例):
第1步.内核启动:
光盘启动后,自动寻找光盘WXPE目录下的SETUPLDR.BIN,并加载它(始引导文件,相当于NT系统的NTLDR),需要同目录下的NTDETECT.COM(同NT系统的同名文件);引导文件中指示了WINNT.SIF(WINNT.XPE)的位置(相当于XP系统BOOT.INI)。
---------------------------------------------------------------------
WINNT.XPE内容如下:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\System32\"
OsLoadOptions="/minint/fastdetect/rdpath=MiniPE\winpe.IM_"
以上内容表示:
1.以“ramdisk方式”加载光盘镜像文件;
2.启动后的系统路径为\WXPE\System32,这里相当于我们平常的\Windows\System32;
3.该配置文件指示了系统镜像(IS_、ISO、IM_或IMA,也就是常说的“内核”)的位置。
----------------------------------------------------------------------
第2步.加载外置程序:
外置程序的加载依赖于PECMD.INI(有的存在于WINPE.IS_的WXPE\SYSTEM32\目录下;有的在Programs文件夹的某个目录下...),其中形如"LOAD\MiniPE\WinPE.INI"的语句即为加载外置程序的配置文件(WinPE.INI)。
这个文件可以在任何可见分区(PE下可见的分区),PECMD在执行时自动搜索所有“可见分区\MiniPE\下的WinPE.INI”,再根据WinPE.INI实现加载外部程序。
(例如外置程序在PE.WIM包里面,或者直接存在某个文件夹下,说明:
以上目录各个版本PE名称略有不同)。
简单理解:
光盘引导文件(例如pe.bif)——SETUPLDR.BIN——WINNT.XPE——启动PE1.x。
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
WindowsPE3.x(2.x类似)引导过程(详见Waik说明文件):
简明过程:
光盘启动后自动加载引导文件,将控制权交给Bootmgr,Bootmgr读取Boot\BCD,根据BCD文件的信息读取Sources\Boot.wim文件,进入PE。
详细过程(微软Waik说明文档):
1.加载特定媒体上的启动扇区(MBR)。
将控制传递给Bootmgr。
Bootmgr从启动配置数据(BCD)中提取基本的启动信息,并将控制权传递给Boot.wim中包含的Winload.exe文件。
然后Winload.exe加载相应的硬件抽象层(HAL),并加载系统注册表配置单元和必需的启动驱动程序。
完成加载后,将会准备执行内核Ntoskrnl.exe的环境。
2.执行Ntoskrnl.exe,完成环境设置。
将控制权传递给会话管理器(SMSS)。
3.SMSS加载注册表的剩余部分,配置运行Win32子系统(Win32k.sys)的环境及其各种进程。
SMSS加载用于创建用户会话的Winlogon进程,然后启动服务和剩余的非必要设备驱动程序及安全子系统(LSASS)。
4.Winlogon.exe根据注册表值HKLM\SYSTEM\Setup\CmdLine来运行设置。
如果存在%SYSTEMDRIVE%\sources\setup.exe,Winpeshl.exe将启动它,否则Winpeshl.exe将查找在%SYSTEMROOT%\system32\winpeshl.ini中指定的应用程序。
如果未指定任何应用程序,则Winpeshl.exe将执行cmd/k%SYSTEMROOT%\system32\startnet.cmd。
默认情况下,WindowsPE包含一个将启动Wpeinit.exe的Startnet.cmd文件。
Wpeinit.exe加载网络资源,并与网络组件(如DHCP)进行协调。
5.Wpeinit.exe完成后,将显示命令提示符窗口。
此时,WinPE3.1的启动过程完成。
简单理解:
光盘引导文件(例:
pe.bif)——bootmgr——BCD——boot.wim——启动PE3.x。
1.3winPE结构体系
以下是PE的结构体系图
以下是PE的构建过程
2.22.WindowsAIK的初步安装与使用
2.WindowsAIK的初步安装与使用
2.1什么是WindowsAIK?
中文名称为Windows自动安装工具包者Windows自动安装套件。
Windows自动安装工具包设计源于帮助原始设备制造商(OEM)、系统构建者以及企业IT专业人士将Windows部署到新硬件上。
WindowsAIK是一个支持Windows最新版本的部署工具集。
利用此工具可以:
允许您署名和自定义任何Windows产品;允许您安装非Windows操作系统组成部分的应用程序和设备驱动程序;提供灵活的方法和工具来帮助您优化制造过程,无论您每月组装10台还是10,000台计算机。
2.2使用WindowsAIK制作PE
2.2.1下载WindowsAIK
请您自行在微软官网下载WindowsAIK。
2.2.2安装WindowsAIK
您会得到一个ISO文件,您可以用压缩软件解压或其他软件进行挂载。
您会得到如下文件:
第一步:
运行StartCD.exe
第二步:
执行安装
第三步:
单击下一步。
第四步:
第五步:
第六步:
耐心等待一段时间。
第七步:
单击退出
至此,WindowsAIK已经安装完毕。
2.2.3运行WindowsAIK
由于没有桌面快捷方式,您需要在开始菜单中启动她。
单击部署工具命令提示。
界面如下:
2.33.PE的基本制作步骤
3.PE的基本制作步骤
3.1复制PE3.0所需文件
打开部署工具命令提示,输入一下命令copypex86D:
\winpe
(D:
\winpe表示要复制到的目录,这里我做一个示范。
注意空格)
等待一会儿。
。
这些是生成的文件:
【编编的话】winpe这个目录不能存在,不能使用空目录,根目录也不行。
同时父目录不得有同名文件。
否则会返回错误信息。
3.2挂载镜像(可简单理解为将镜像文件解开)
输入以下命令
imagex/mountrwd:
\winpe\winpe.wim1d:
\winpe\mount
(其中d:
\winpe\winpe.wim表示镜像的完整路径,1表示第一个映像,d:
\winpe\mount表示要挂载到的目录。
)
依旧等待一会儿
命令成功执行。
3.3PE修改--------对挂载出的PE进行修改(如果不需要直接跳到下一步)
3.4保存对镜像的修改并卸载所挂载的目录。
输入命令imagex/unmountd:
\winpe\mount/commit
(d:
\winpe\mount表示之前所挂载的目录)
等待一会儿。
。
。
命令成功执行
3.5将修改好的winpe复制到刚才目录下的iso目录下的sources文件夹里
3.6生成ISO
输入命令oscdimg-n-bd:
\winpe\d:
\winpe\isod:
\win.iso
(命令中所有的d:
\winpe\请自行改为您第一步时的所在目录。
d:
\win.iso表示生成的文件名及目录)
【注意】要注意-b和后面的路径之间不能有空格,这里有AIK的帮助文档。
等待一会儿
2.44.对PE的初步DIY
4.对PE的初步DIY
4.1更改WindowsPE的可写内存大小(需在脱机情况下操作)
如果运行某个应用程序时WindowsPE环境没有响应,则可能是内存不足。
默认情况下,WindowsPE会分配32兆字节(MB)的可写内存(称为暂存空间)。
可以通过如下命令来修改暂存空间:
dism/image:
D:
\winpe\mount/Set-ScratchSpace:
256(其中D:
\winpe\mount表示您讲WindowsPE所挂载到的目录。
256表示暂存空间为256MB。
您也可以32、64、128、512来替换256。
不过,256MB的暂存空间就够了。
)以下是命令的输入界面:
出现以下界面表示执行成功:
4.2添加程序包(需在脱机情况下执行,这一步主要讲为32位的WindowsPE添加程序包)
首先挂载镜像,输入dism/image:
d:
\winpe\mount/Get-Packages即可查看当前WindowsPE中所安装的程序包。
(其中d:
\winpe\mount表示您将镜像所挂载到的目录。
)
之后将返回所安装的具体程序包。
(以下是基本WindowsPE镜像所带的程序包。
)
此外,WindowsPE3.0提供了以下可添加到基本映像的程序包。
注意:
1.基本WindowsPE映像不包含上面列出的所有程序包。
您必须使用DISM工具来安装适当的程序包。
为了使可选组件正常运行,请确保在客户端计算机上安装了必需的语言资源。
2.winpe-xml程序包现在位于基本boot.wim中。
3.WindowsPE-setup-package是winpe-setup-client和winpe-setup-server的父程序包。
在安装子程序包之前必须安装winpe-setup。
4.在添加程序包时,必须包含中性语言程序包和特定于语言的程序包。
首先,挂载WindowsPE镜像,然后进行操作。
记得在之前的教程里,我曾让大家记住WindowsAIK的安装目录,现在就派上用场了。
在这目录后面加上Tools\PETools\x86\WinPE_FPs就是储存了我们安装程序包需要的文件。
如安装目录是C:
\ProgramFiles\WindowsAIK\,储存这些文件的目录就是C:
\ProgramFiles\WindowsAIK\Tools\PETools\x86\WinPE_FPs
这些是程序包,中文语言程序包在子目录zh-cn下,中性语言程序包在当前目录下。
我建议大家加入:
WinPE-HTA、winpe-scripting、winpe-mdac、WinPE-WMI、WinPE-PPPoE这几个程序包。
如果要添加WinPE-HTA,先输入命令dism/image:
D:
\winpe\mount/Add-Package/PackagePath:
"C:
\ProgramFiles\WindowsAIK\Tools\PETools\x86\WinPE_FPs\winpe-wmi.cab"
(其中D:
\winpe\mount表示挂载WindowsPE的目录,C:
\ProgramFiles\WindowsAIK\Tools\PETools\x86\WinPE_FPs\winpe-hta.cab表示程序包具体所在位置,注意引号!
)
以下是命令成功执行的界面:
在添加完中性语言程序包后,我们还需要添加特定语言程序包。
我们所需要的特定语言程序包位于WinPE_FPs的子目录zh-cn下,且特定语言程序包与中性语言包名字有些出入:
输入如下命令dism/image:
D:
\winpe\mount/Add-Package/PackagePath:
"C:
\ProgramFiles\WindowsAIK\Tools\PETools\x86\WinPE_FPs\zh-cn\winpe-hta_zh-cn.cab"
(由于命令都差不多,我就不多说了,不过必须先添加中性语言程序包再添加特定语言程序包,否则会出错。
在添加完程序包之后,用刚才的/Get-Packages查看一下安装的程序包。
)
4.3添加驱动(需在脱机情况下进行。
)
首先要弄到驱动程序(这个是我的网卡驱动:
)
挂载WindowsPE镜像,输入以下命令
Dism/image:
D:
\winpe\mount/Add-Driver/Driver:
D:
\drivers\oem1.inf
(其中D:
\winpe\mount表示镜像挂载目录,D:
\drivers\oem1.inf表示驱动的inf文件所在目录)
看到如下界面表示命令执行成功:
让我们看一下驱动在WindowsPE中的运行效果:
4.4添加驱动(在联机情况下进行)
由于这种添加驱动的方法我们不常用,因此我就一笔带过吧。
请在命令提示符下,键入drvload.exe(在这里,inf_path是到设备驱动程序的路径。
可以使用逗号分隔每个inf_path项目来指定多个路径。
大于号与小于不用加入)
【编编的话:
】
1.在本部分教程中,要输入的命令十分繁琐,请您小心处理。
在处理完以上的操作时,请务必提交对镜像的修改,否则操作无效!
具体命令请见以前的教程。
2.我们这里所说的脱机状态和联机状态,不是是否有网络连接的状态。
根据微软的解释,脱机状态指的是没有登陆系统(我们通常的操作就是在这种状态下操作的),联机状态指已经登陆系统。
3.程序包不是一定越多越好,请根据需要添加。
4.驱动程序服务命令可在脱机映像中用于添加和删除基于INF文件的驱动程序,而且可在处于运行状态的应用程序(联机)上枚举驱动程序。
Microsoft(R)Windows(R)Installer或其他驱动程序包类型(如.exe文件)不受支持。
您可以模仿以下例子来查看您当前WindowsPE中所添加的驱动程序,输入Dism/image:
D:
\winpe\mount/Get-Drivers(D:
\winpe\mount指将WindowsPE所挂载到的目录)
5.要知道,驱动程序不是只要加入就可以正常运作的,某些驱动程序需要注册表、系统组件以及服务的支持。
一般来讲,网卡驱动只要加入就可以使用,不过,像声卡和显卡之类的驱动程序就没那么容易了。
6.曾经有人说添加驱动才是DIYWindowsPE的精华所在,您现在是否觉得添加程序包比添加驱动繁琐得多呢?
7.以上教程围绕着微软的帮助文档加上我个人经历来写,如果想知道更多的内容(比如添加语言包),请参阅WindowsAIK3.0自带的帮助文档。
2.55.添加explorer
5 添加explorer
本部分教程所需工具下载:
①PE3.1所需explorer文件复制点此下载
②RegistryWorkshop
什么是explorer?
explorer.exe是Windows程序管理器或者Windows,它用于管理Windows图形壳,包括开始菜单、任务栏、桌面和文件管理。
这是我们所熟悉的Windows7的资源管理器
不过,原版PE并没有自带explorer。
当然,要想在PE里运行explorer并不是直接加入explorer.exe再运行就可以的,本部分教程将教您循序渐进地添加explorer。
2.5.15.1复制文件
5.1复制文件。
打开第一个工具,按提示操作。
//此步需要将Win7SP1的install.wim中的一个卷解压出来
//打开Win7SP1镜像,找到Sources下的install.wim,解压出来
//再次用压缩软件打开install.wim,解压出5这个文件夹,记住位置
//我解压的位置是F:
\Win7\install5
//接下来就是枯燥的复制了,将install中的文件一个个复制进去
//记得以管理员身份运行!
//设置相关信息后,执行即可。
//可以忽略一些错误
2.5.25.2修改注册表
5.2修改注册表(强烈建议到PE下操作,否则会出现无法修改的情况!
)。
⒈提取原版Windows7SP1镜像的注册表配置单元文件。
首先需要提取出install.wim(该文件位于原版Windows7SP1镜像的Sources目录下),挂载install.wim复制出其Windows\System32下的config文件夹。
2.复制出PE的注册表配置单元文件,和以上提取出的文件分开存放。
步骤都差不多
3.下载RegistryWorkshop(本教程开头已给出)这是一个注册表修改工具,当然也可以用系统自带的,但是用这个会比较方便些。
为了方便运行,我将它命名为1.exe。
4.启动PE,运行RegistryWorkshop。
运行界面如下:
①导出PE→software注册表
点击文件->加载配置单元文件->打开PE的config文件夹,选择software配置单元文件->打开
在弹出的对话框中输入要挂载的项名称(随便输入),点击确定继续。
在左边注册表项的框中。
展开HKEY_LOCAL_MACHINE项,单击刚才加载的注册表项。
在刚才加载的注册表项上单击右键->导出->在弹出的对话框中选择一个位置,保存注册表文件。
等待一会儿后,点击文件->卸载配置单元
②导出系统注册表
点击文件->加载配置单元文件->打开原版Windows7SP1的config文件夹,选择software配置单元文件->打开
在弹出的对话框中输入项名称(随便输入,一定要和上面操作PE注册表单元文件的名称一致),点击确定。
在左边注册表项的框中。
展开HKEY_LOCAL_MACHINE项,单击刚才加载的注册表项。
在刚才加载的注册表项上右键,点击“查找”。
在弹出的对话框中输入“D:
\”,并点击“查找”继续。
在查找出来的结果中随便选一项,点击右键->替换
在弹出的对话框中输入“X:
\”,并单击替换继续。
接着,按照上面的方法查找“InteractiveUser”,将查找的项目全部删除。
注意!
以上查找和替换的操作一定要多重复几次!
因为RegistryWorkshop
一次最多能找到1000个注册表项,而“D:
\”大约有2904项,“InteractiveUser”大约有1500项。
一定要记住
③导入PE注册表文件
接着,选择您刚才所加载的注册表项,点击文件->导入->选择刚才保存的注册表文件->打开->确定
④修改SHELL值为explorer.exe
接着,展开123\Microsoft\WindowsNT\CurrentVersion\Winlogon(123替换成您所加载注册表项的名称)在Winlogon这项的右边窗口,双击名称为“SHELL”的字符串值,在弹出的对话框中,将数值数据替换为“explorer.exe”,点击确定继续。
将滚动条拉上去,选择加载的注册表项,点击文件->卸载配置单元。
⑤替换PE的注册表配置单元文件
至此,您需要复制出刚才修改的注册表配置单元文件(software)来替换PE的注册表配置单元文件了。
(注意,一定要用刚才修改的原版Windows7SP1的来替换PE的,而不是用PE的替换PE的)
2.5.35.3提交对PE镜像的修改
5.3提交对PE镜像的修改
现在,您已经可以在PE中运行explorer了。
运行方法:
输入explorer并回车。
让我们看一下运行效果:
不过,这个PE看起来还有点简陋,比如没有“我的电脑”,没有主题,也没有桌面背景。
在下一期的教程中我将教大家完成最后的修改。
2.5.4附:
在已登录系统中修改注册表的办法
附:
在已登录系统中修改注册表的办法
加载配置单元后,右键加载的配置单元
//权限->高级->添加->输入Everyone->勾选”完全控制”
->勾选”使用可以从此对象...”->应用
//权限->高级->所有者->其他用户和组->输入Everyone
->勾选”替换子容器...”->应用
2.66.对注册表的最后修改及添加主题
6.对注册表的最后修改及添加主题
前面的教程我们已经讲了如何初步处理Explorer,下