Windows PE (Windows PreInstallation Environment)直接从字面上翻译就是“Windows预安装环境”,微软在2002年7月22日发布,它的原文解释是:“Windows预安装环境(Windows PE)是带有限服务的最小Win32子系统,基于以保护模式运行的Windows XP Professional内核。它包括运行Windows安装程序及脚本、连接网络共享、自动化基本过程以及执行硬件验证所需的最小功能。”换句话说,你可把Windows PE看作是一个只拥有最少核心服务的Mini操作系统。
微软推出这么一个操作系统当然是因为它拥有与众不同的系统功能,如果要用一句话来解释,我认为与Win9X/2000/XP相比,Windows PE的主要不同点就是:它可以自定义制作自身的可启动副本,在保证你需要的核心服务的同时保持最小的操作系统体积,同时它又是标准的32位视窗API的系统平台。当然,现在这么说也许难以理解,没有关系,下面让我们来仔细研究它。
Windows PE概览
即使有刚才的解释,你一定还是对这个全新概念的Mini操作系统一头雾水,没关系,在这里我将演示一下其运行的全过程,相信看过之后你或许就会有大致的了解。大多数人获得的Windows PE光碟(包括我手上这张ISO镜像光碟)应该是一张“Windows XP OPK”CD,意思就是Windows XP OEM预安装工具包CD。实际上,Windows XP OPK CD是Windows PE 32位版本的一个可引导副本,也就是说,这张CD已经是个用Windows PE定义制作的操作系统了,我们可直接用它来引导系统。先看看这张CD的目录结构吧,总共有352MB,是不是有些大呢?其实由于这是个副本(至少包含了不少驱动程序),大小是由当时自定义制作决定的,若是Windows PE的32位非自定义版本,其在磁盘上的镜像大约为120MB。
1.引导Windows PE
笔者考虑到网络环境等问题,主要的使用环境是VMware虚拟机和Virtual PC虚拟机,不过这两种虚拟机环境与实际PC环境几乎没有区别(就是说如果你不清楚虚拟机也没关系,就当是在真实PC上直接运行)。
将BIOS中设置成光驱引导,并开始启动系统,当屏幕画面上出现“Press any key boot from cd”时,按任意键从光驱上的Windows PE引导启动。如果你的存储设备驱动不被支持,在启动时按下F6键可加载特殊设备的驱动。当启动到桌面时系统会做一些如调整分辨率的工作,最后打开默认的CMD命令行解释工具,大家看看,是货真价实的图形操作环境哦。
可以看到桌面上空空如也,不要指望可以拿鼠标点来点去,毕竟是个什么应用程序都没有安装的最小化图形操作系统。但它确实是标准的视窗环境,光碟上带有记事本,在命令行下输入“Notepad”并回车就可打开;另外尽管光碟上带有的可执行的命令行工具有限,但明显可以自己添加,看看这是什么?没错,是我们最熟悉的扫雷游戏(现在知道题头所指了吧,呵呵),拿鼠标先玩玩吧,这是笔者从大家熟悉的WinXP操作系统中加入的(方法很简单,用ISO工具直接拷入刚才的镜像文件就可以了)。
那么还是先回到CMD命令行工具中吧。默认的目录是\I386\system32\,输入命令行“dir *.exe /w”可查看有哪些可运行的程序。下面我们实际研究一下对个人用户有实际意义的Windows PE特性的操作。
在光碟镜像中可同时看到32位和64位操作系统的工具,对于个人用户来讲,你可用它直接引导没有安装任何系统的机器,并在其上实现32位系统的许多功能,这在后面会一一道来。
上面说了其实我们拿到的是Windows PE的一个可执行副本,即Windows XP OPK(Windows XP OEM预安装工具包)CD。从名字都知道它原来的本职工作是为了方便OEM工作的。如果你在Windows操作系统环境下打开光碟,它就会自动运行Autorun为你的系统安装一个“Windows安装管理器”的工具包。利用它,你可以轻易制造出带有计算机厂商OEM标志的Windows安装镜像。虽然这是Windows XP OPK CD的主要本职工作,但显然对我们个人没什么意义,当然,如果你想把手上的Windows安装CD都打上自己独有的印记,并在朋友的机器上安装时炫一下,那么使用它是个好主意。当然自己的“印记”绝非OEM标志那么简单,实际上你还可任意设定Windows PE携带的软件,并可设置这些软件在Windows PE启动时运行;理想的情形下你甚至可以为自定义的Windows PE版本加上类似于Windows Explorer的图形外壳程序——要不怎么叫专为厂商OEM设计呢?
自定义Windows PE
1.自定义Windows XP OPK CD的启动过程
这当然是最简单的自定义方法,简单到你只需在软盘上放一个自己编写的INI文件就可以了。
进入Windows XP OPK CD中的Windows PE目录,可找到一个名为“Startopk.cmd”的文件,实际上此CD引导系统启动到后期,就会执行Startopk.cmd(这里的CMD文件类似于BAT批处理文件,可以手动编辑)。打开Startopk.cmd,里面只有一行命令“factory -Windows PE”,其意思是找到Winbom.ini文件,并顺序处理这个文件中的命令部分。Winbom.ini对Windows PE的启动过程至关重要,我们来看一下能默认用它实现哪些功能:
因此要自定义Windows PE的启动过程当然不能放过Winbom.ini,这里的关键就是系统会如何找到这个文件了——因为原来CD介质上的Winbom.ini文件显然是不可改写的。这里Windows PE做了一个巧妙的设计,使得Factory.exe将首先在可移动媒体驱动器(如软盘驱动器)根目录搜索Winbom.ini文件。所以你只需编辑Winbom.ini文件,并将其放到软盘的根目录下,在Windows XP OPK CD启动时将插入此软盘,那么Factory命令就会优先读取软驱上的Winbom.ini文件内容,通过这种方式就可以控制手上这张Windows XP OPK CD的启动了。
明白了如何控制Windows XP OPK CD的启动,那么启动任务的定义就在于Winbom.ini文件本身的内容了,实际上Windows XP OPK C运行命令factory -Windows PE时,它将按下面顺序处理Winbom.ini文件中的命令部分:[Windows PE.Net]、[DiskConfig]、[OEMRunOnce]、[OEMRun]、[Windows PE](除Restart项)、[UpdateSystem]、[Windows PE]中的Restart项。当然实际上,Winbom.ini文件中远不止这些部分,但对于通常的制作,这些关键项已足够。我们可以打开手上这张Windows XP OPK CD的Winbom.ini文件直观地看看,内容出乎意料的简单吧?由于Winbom.ini的支架已经写好,默认参数也已设定,若要自定义,只要加入其所包含各项的命令参数就能达到你想要的启动效果,当然这种定义也是有一定限制的,详细设置方式可阅读Windows XP OPK CD上的参考说明,都是非常简明的英语,并且大多数都有例子说明,所以并不难懂。
2.制作Windows PE的可启动ISO副本
上文已提到,通常我们拿到的Windows XP OPK CD是Windows PE基于32位版本的可引导副本,通过自定义启动过程可以取得一定的自由性。但如果希望配置Windows PE使用不同的驱动程序组、或加入自定义的程序等,上述方法就不可取了。这时可创建自定义的Windows PE版本,这当然也是Windows PE最有特点之处。在加入自定义特性之前,让我们先来看一下Windows PE自定义版本的创建过程:
1.在硬盘上创建一个新目录,假设为“build_location”。
2.将OPK CD插入CD驱动器,下面指定表示为“cd_drive”。
3.将cd_drive\Windows PE下的所有文件复制到build_location目录。
4.将cd_drive\tools\platform目录中的Factory.exe和Netcfg.exe文件复制到build_location目录。如果正在创建Windows PE的32位版本,对应Platform的值为x86。
5.从CD驱动器取出OPK CD。
6.如果正在创建Windows PE的32位版本,将Windows XP Professional CD插入CD-ROM中。
7.在命令行模式下进入build_location,运行以下命令:
上面提过,CMD类似于BAT批处理文件,Mkimg.cmd与Startopk.cmd在同一目录,你发现它还可以带参数运行:其中“source_directory”用于指定Windows XP Professional 32位版本CD的位置,如果source_directory是CD-ROM,则只需指定驱动器号,要注意在source_directory中不要包括后置斜杠;“destination_directory”用于指定生成版本的存放路径(不是ISO文件,而是硬盘版本)。“image_name”可选,当然这里的目的是要生成ISO镜像文件,所以应在此指定其路径和文件名。需要注意,你可将ISO文件刻录到CD上,若要此CD能够成为系统启动光盘,请在创建ISO文件前删除i386目录下的Bootfix.bin文件。
3.自定义特性的加入
按照上面的步骤就可制作出Windows PE的可启动ISO副本,但显然还没有做什么自定义的工作。进入Windows XP OPK CD中的Windows PE目录,可看到除了上面提到的Mkimg、Startopk文件外,还另有一个CMD文件:Startnet.cmd,上面已经说过Windows PE引导系统启动到后期,就会执行Startopk.cmd。然而当你创建自己的Windows PE版本时,它将使用Startnet.cmd中的命令而不是Startopk.cmd了。默认Startnet.cmd文件并没有直接使用“factory -Windows PE”命令,我们大致看一下其中的内容:
regsvr /32 /s netcfgx.dll
factory -minint
netcfg -v -Windows PE
net start dhcp
net start nla
a:\floppy.cmd