定制个性化多存储介质的 Vista PE
Microsoft
Windows Vista RTM(以下简称 Vista)发布已经有一段时间,全新的安装部署特性吸引了不少 ITPro 的关注,接下来我将以定制一个个性化的 VistaPE(以 Vista 为核心的
Windows PE,版本为2.0)为主题,与大家分享我是如何定制集成了常用工具,且可以运行于 CD-ROM 和 UFD 移动存储设备(如:闪存盘或移动硬盘)上的 VistaPE。
首先,让我们简单地了解一下 Windows PE 2.0(Microsoft Windows 预安装环境 2.0,以下简称VistaPE)。 它是基于 Vista 核心的一种可启动工具,提供了用于安装、故障排除和故障恢复的操作系统功能。VistaPE 并不是一个常规用途的操作系统,它设计用于三种特定任务:
• 安装 Microsoft Windows Vista。VistaPE 在每次安装 Vista 时运行。在安装阶段收集配置信息的图形工具将在 VistaPE 中运行。此外,IT 部门可以自定义和扩展 VistaPE 以满足其独特的部署需求。
• 故障排除。VistaPE 可用于自动和手动故障排除。例如,如果Vista由于系统文件损坏而无法启动,则VistaPE可以自动启动并运行Windows恢复坏境。还可以手动启动VistaPE以使用内置或自定义的故障排除和诊断工具。
• 故障恢复。原始设备制造商(OEM)和独立软件供应商(ISV)可以使用VistaPE构建自定义的自动解决方案,以恢复和重新构建运行 Vista 的计算机。例如,用户可以从 VistaPE 恢复 CD 或恢复分区启动计算机,以自动重新格式化硬盘,并重新安装带有原始驱动程序、设置和应用成的 Vista。
下图向大家展示了VistaPE的体系结构:
VistaPE 拥有众多的优点,如:对 NTFS 5.x 文件系统的本地支持,包括动态卷的创建和管理;对 TCP/IP 网络和文件共享的本地支持(仅限客户端);对 32位(或64位)Windows 设备驱动程序的本地支持;对 Win32 应用程序编程接口(API)子集的本地支持和对 Windows Management Instrumentation(WMI)及 Windows 脚本宿主(WSH)的可选支持;此外 VistaPE 可以从各种介质,包括 CD、DVD、USB 闪存驱动器(UFD)和远程安装服务(RIS)服务器启动。
前面我们提到过VistaPE并不是一个常规的操作系统,它只是 Vista 的子集,所以它具有以下的限制:
• 为减小大小,VistaPE仅包括可用的 Win32 API 的一个子集。包括I/O和核心Win32 API。
• 为防止将 VistaPE 作为盗版操作系统使用,在连续使用72小时后,VistaPE 将自动停止运行外壳程序并重新启动。无法对此时间段进行配置。
• VistaPE 无法作为文件服务器和终端服务器使用。(不支持远程桌面。)
• 分布式文件系统(DFS)名称解析仅支持独立的根。不支持域根。
• 获得文件服务器网络连接的已测试方法为 TCP/IP 和基于 TCP/IP 的 NetBIOS。不支持起他方法(例如 IPX/SPX 网络协议)。
• 在运行 VistaPE 时仅对 VistaPE 注册表进行的所有更改将在下次重新启动计算机时丢失。若要对注册表进行永久性更改,必须在启动 VistaPE 之前脱机编辑注册表。
• 在 VistaPE 中创建分区时,分配的驱动器号是连续的;但是,当重新 VistaPE 时,所分配的驱动号就会恢复为默认顺序。
• VistaPE 不支持 Microsoft.Net
Framework 或公共语言运行实践(CLR)。
• VistaPE 不包括 Windows on Windows 32(WOW32)、Windows on Windows 64(WOW64)、虚拟 DOS 机(VDM)、OS/2 或 POSIX 子系统。
• 若要安装64位版本的 Windows,必须使用64位版本的 VistaPE。同样,32位版本的 Windows,必须使用32位版本的 VistaPE。
• 在启动 VistaPE 安装程序之前,可以使用 VistaPE 对计算机磁盘进行配置和分区。如果在启动 VistaPE 安装程序之前,已使用 Diskpart.exe 将硬盘转换为动态磁盘,则在安装操作系统时会将这些硬盘识别为外部磁盘,并且这些磁盘上的任何卷都将无法访问。
• VistaPE 不支持使用 Windows Installer(msi)打包的应用程序。
• VistaPE不支持 802.1x。
VistaPE 的其它特性可以参考帮助文档,这里就不再一一向大家介绍。虽然上面的限制看起来让我们在使用 VistaPE 时有些力不从心,但思考实际中的应用,我们定制个性化的 VistaPE 的主要用途也就是为了系统部署和系统排错,当然我们也可以将 VistaPE 作为临时的操作平台供我们应急使用,而以上的一些限制并不会严重地影响我们的使用。
在定制 VistaPE 前,我们需要作一些准备工作:
1、 操作环境可以选择 XP 或 Vista,但是如果你准备在 UFD 移动存储设备上使用 VistaPE,那么我强烈建议你选择 Vista 系统作为此次的操作环境。
2、 下载并安装 VistaPE 的工具包,它的全称是 Windows 自动安装工具包(AIK),Windows AIK 的简体中文版可以从下面这个地址获得:
[url]http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c7d4bc6d-15f3-4284-9123-679830d629f[/url]。
3、 为了测试在 CD-ROM 和 UFD 上的 VistaPE 运行状况,请安装 Virtual PC
2007,如果是 XP 系统则可以选用 Vistual PC 2004,并准备一个闪存盘或移动硬盘。
4、 定制一个个性化的 VistaPE,我们需要一个 Shell,它是一个类似 Windows 下的 Explorer 的程序,帮助我们实现诸如登录选择、开始菜单、快速启动、桌面定制等功能,这里我推荐使用 Bs Explorer,可以从 [url]http://www.bootcd.us/BartPE_Plugins_Category/shell/[/url] 下载到。
5、 VistaPE 中并不包含资源管理器,所以我们还需要获取一个 ERDCMD,当前版本是2005,下面的实例中我使用的 ERDCMD2003,大家可以从网上搜索下载一个经过汉化的 ERDCMD 工具集,ERDCMD 组件丰富如破解本地系统帐号密码的 Locksmith、注册表编辑器、资源管理器等等。
6、 其他小工具可以根据自己的需要加入,比如我此次制作的体验版 VistaPE 中就集成了 Ghost、FTP 工具、硬件检测工具、远程登录、压缩软件、虚拟光驱等实用的小工具。
一切准备就绪后,我们就可以开始此次定制旅程了,不过在开始前,还是要按照惯例,先向大家介绍一下我的基本环境,以供大家参考:
• Dell n1100: Intel Celeron CPU3.06G/512M-DDR2-533MHz*2/ 80G-PATA+120G-PATA
• DIY-UFD:Samsung 40G-8M Cache +多彩耐雷特USB2.0外置硬盘盒
• 操作系统:Windows Vista
Enterprise ENU
• 虚拟机:Virtual PC 2007
• VistaPE:Windows AIK CHS
• Shell:BS Explorer v1.5.0.12
• 增强工具:ERDCMD2003 汉化版
提供以上的环境说明,是为了大家在定制过程中出现问题时可以与我所提供的基础环境说明作一下对比参考,以便于排错。OK,下面开始进入正题!
在准备好操作环境(我非常强烈地推荐大家使用 Vista 作为操作环境,否则出现什么问题你只能自己排错,因为涉及篇幅问题,本文不会对 XP 操作环境下定制 VistaPE 时的具体流程和注意事项作具体的说明,还望各位见谅!),并安装好 Vistual PC 后,请安装之前下载到的 Windows AIK。
上图就是安装启动界面,Vista 系统环境则可以直接选择“Windows AIK 安装程序”进行安装。在完成 WindowsAIK 的安装后,我们需要设置 VistaPE 构建环境。
在此步骤中,我们将会创建支持构建VistaPE映像所需的目录结构。
1、 从开始-所有程序中找到 Windows AIK 程序组,并运行其下的“Windows PE 工具命令提示”;然后在命令提示符下运行 Copype.cmd 脚本:
代码 |
copype.cmd x86 c:\vistape |
该脚本命令行会在C盘根目录下创建以下目录结构并复制所有必要的软件。
代码 |
\vistape \vistape\iso \vistape\mount |
2、 添加可选的工具,因为在 VistaPE 下工作时可能需要使用到,在此例中我们需要这些工具。
• ImageX
Vista部署时用来捕获和应用映像的工具。
代码 |
copy “c:\program files\windows aik\tools\x86\imagex.exe” c:\vistape\iso\ |
• 程序包管理器(Pkgmgr.exe)
这个工具用来脱机处理 Windows 映像(.wim)文件
代码 |
xcopy “c:\program files\windows aik\tools\x86\servicing” c:\vistape\iso\servicing /s |
注:提示时选择拷贝目录。
代码 |
copy %windir%\system32\msxml6*.dll c:\vistape\iso\servicing |
3、 因为ImageX是VistaPE映像的一部分,在 ImageX 捕获操作过程中,一些文件可能会被锁定,这将导致 ImageX 失败,为避免这个情况的发生,可以通过在 C:\vistape\iso 下创建一个名为 “wimscript.ini” 的配置文件,内容如下:
代码 |
[ExeclusionList] ntfs.log hiberfil.sys pagefile.sys “System Volume Information” RECYCLER Windows\CSC
[CompressionExeclusionList]
*.mp3
*.zip
*.cab
\WINDOWS\inf\*.pnf
|
注:仅当将 wimscript.ini 保存到相同位置时,ImageX 才会对其进行自动监测。此例中因不涉及 ImageX 的捕获,所以此步骤也可省略。
完成以上的步骤,我们的VistaPE环境就准备好了,接下来要开始定制我们的 VistaPE,因为 VistaPE 是以 WIM 映像格式存在的,所以我们要对其编辑修改首先要将其映像装入到一个目录中,为此需要运行下面的命令:
代码 |
Imagex /mountrw c:\vistape\winpe.wim 1 c:\vistape\mount |
注:这里使用/mountrw参数就是为了使我们能够编辑\mount下的目录和文件。
接下来就进入了定制的实质阶段,打开资源管理器并定为到 C:\vistape\mount 下,创建一个名为 “Programs” 的子目录,之所以要单独创建这个子目录是为了方便我们配置 BS Expolorer 和 ERDCMD。目录创建完毕后将我们准备好的工具规划拷贝至此,下图是我个性化 VistaPE 的目录结构。
之前提到过我们要使用 BS Explorer 来作为 Shell 环境,并使用 ERDCMD 的 Explorer 作为资源管理器,所以我们还需要修改他们的一些配置文件以满足我们的需要。
定制我们的 Shell 环境,Bsexplorer 为我们提供了系统登录、快速启动栏、开始菜单栏、桌面及桌面图标等个性化定制用的配置文件,他们分别对应的文件名及关键参数的使用:
1、 bs_logon.ini
在此文件中,[shell] 下定义了我们要登录哪个 Shell,比如我们启动 VistaPE 后可以选择是登录使用 BS Explorer 这个 Shell,还是登录使用 VistaPE 默认的 CMD Shell,也许我们只需要一个资源管理器的 ERDCMD Shell。此例中 [shell] 下我是这样配置的:
代码 |
BS Explorer=%SystemDrive%\Programs\BsExplorer\explorer.exe Console windows=%windir%\system32\cmd.exe ERD Commander Shell=%SystemDrive%\Programs\erdcmd2003\explorer.exe |
注意:为了能够使我们这个个性化的登录生效我们必须在 VistaPE 映像下的 \Windows\system32 子目录下创建一个名为“winpeshl.ini”配置文件,并写入下面的配置信息:
代码 |
[LaunchApp] AppPath=%systemdrive%\programs\bsexplorer\bslogon.exe |
2、 bs_qlaunch.ini
用来定制快速启动栏的配置文件,内容还是很容易理解的:
Caption 用来指定程序的显示名称;
ExeName 用来指定程序的具体路径和文件名称;
IconName 用来指定程序显示图标文件的所在位置和文件名称;
IconNumber 用来指定选择图标文件中的哪个图标;
ExeDir 用来指定该程序所在的默认路径
3、 bs_start.ini
用来定制开始菜单栏的配置文件,仔细看看里面已经在的配置,相信你也能够很快掌握,如果你下载了我制作的 VistaPE 体验版,可以参考我其中的配置。
4、 bs_desktop.ini
用来定制桌面上快捷方式的配置文件,内容与前面的类似,不过需要注意的就是图标的排版。而控制位置的就是文件中“ItemX”和“ItemY”,如果是水平排列,那么每个图标之间的 ItemY 差值最好是80,而最大不要420!因为桌面图标不会自动对齐排列。而垂直排列时 ItemX 的差值最好也是80。这样会比较美观!
5、 bs_explorer.ini
用来定制桌面其他项的配置文件,比如我们希望在桌面上显示一个段文字以注明版权,而又不希望修改桌面背景,那么我们可以使用“DesktopBkgndText” 这个参数,指定在桌面上显示我们希望出现的问题说明。
关于 BS Explorer 更加全面的定制说明我建议大家还是应该参考帮助或说明文件。此外我需要向大家友情提示需要注意的一个重点,默认的 VistaPE 环境会自动启用网络支持组件,而我们定制的环境则不会,所以我们应该根据自己的需要在自启动程序组或桌面上建立一个启动网络支持组件的快捷程序,在 VistaPE 下启用网络支持组件的命令脚本是" \Windows\System32\startnet.cmd"。
在此例定制过程中还有一个需要注意的地方就是当我们在 VistaPE 中运行硬件检测程序或 Ghost Explore r时系统会提示 oledlg.dll(OLE User Interface Support)没有运行或无法找到,解决办法就是在实际的 Vista 操作环境中将这个文件拷贝到 VistaPE 中 Windows\system32 下。
在完成了所有的定制工作之后,我们就需要重新打包 VistaPE 映像,为此请运行下面的命令行:
代码 |
imagex /unmount c:\vistape\mount /commit |
注:这个命令行是将更改提交至原始映像文件(winpe.wim),此外如果在提交更改前重新启动了计算机等复位系统的操作,你对映像的修改将会丢失,由于看来这个命令好很像我们平常编辑文件时用的保存功能。所以友情提示,请及时执行此命令行以保存对映像文件的修改,当你需要再次编辑时则需要重新运行之前我们解开映像的命令行。
在成功提交更改至原是映像文件后,我们需要在 VistaPE 实例中应用这个修改后的 VistaPE,为此请运行下面的命令行将定制后的 VistaPE 映像覆盖到实例中:
代码 |
Copy c:\vistape\winpe.wim c:\vista\iso\sources\boot.wim |
至此一个个性化后的 VistaPE 实例已经制作完毕,为了在实际环境中使用,我们要将它制作成以 CD-ROM 或 UFD 为载体的介质。
首先我们使用下面的命令行将 VistaPE 实例创建成可启动的 CD-ROM,并且 ISO 格式保存方便我们在虚拟机中测试并最终烧录成 CD-ROM。
代码 |
Oscdimg �Cn �Cbc:\vistape\etfsboot.com c:\vistape\iso c:\vistape\vistape.iso |
以 CD-ROM 为介质的 VistaPE 并不能深深地吸引我们,因为时下使用大容量闪存或移动硬盘的朋友越来越多,将 VistaPE 存贮在这些介质上才是我们真正需要的,早期制作 UFD 移动存储方式的 XPPE 是相当麻烦的,因为要手工地做很多的事情,而 VistaPE 则全面支持 UFD 介质。我们只需要在 Vista 或 VistaPE 环境下执行磁盘分区格式化操作就可以生成一个可引导的 UFD 移动存储设备,用到的命令就是 Diskpart.exe,而此处提到的 Diskpart.exe 非 XP 等其他版本的 Dsikpart.exe,要成功地制作出能够引导的 UFD 移动存储设备必须使用 Vista 版本的 diskpart.exe,这也就是我之前强烈推荐大家使用 Vista 作为操作环境的原因,在 Windows AIK 刚刚发布的时候我就开始研究制作以移动硬盘为介质的 VistaPE,看烂了官方的资料、格式化了n次、失败了n次之后,才正视这个资料中提及到的关键细节。Faint!只能怪自己不能安分地详细阅览用户指南!
以 UFD 移动存储设备为介质的制作步骤是:
1、在 Vista 或 VistaPE 下使用 diskpart.exe 分区格式化磁盘:
代码 |
diskpart
select disk 2
clean
creat partition Primary size=512
select partition 1
active
format fs=fat32
assign
exit
|
注:其中的 disk 2 这个值等于 UFD;size 的单位是 MB,通常生成一个 512M 大小的分区就已经足够装下 VistaPE。
UFD 移动存储设备的可引导分区制作完毕后,就可以使用下面的命令将 VistaPE 拷贝到 UFD 移动存储设备上。
代码 |
Xcopy c:\vistape\iso\*.* /s /e /f i:\ |
注:其中,i:\是指UFD设备。
到此,所有的工作就都完毕了,下来大家可以亲身体验一下运行在移动存储设备上的 VistaPE 了,最后向大家展示一下我定制好的 VistaPE 运行时的截图。同时希望大家能做出更加个性化的 VistaPE。
声明,本文为gOxiA原创文章,转载请保留作者信息。内容中不免引用官方的解释语句,但并不影响原创的真实性。文中涉及的版权信息则遵守各自版权所有者的规定要求。
作者:gOXiA
Blog: [url]http://goxia.maytide.net[/url]
WebSite: [url]http://forum.hamstc.org[/url] & [url]http://forum.maytide.net[/url]