Chinaunix首页 | 论坛 | 博客
  • 博客访问: 575947
  • 博文数量: 88
  • 博客积分: 7206
  • 博客等级: 少将
  • 技术积分: 1162
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-26 16:04
文章分类

全部博文(88)

文章存档

2011年(3)

2010年(24)

2009年(16)

2008年(45)

分类: WINDOWS

2008-04-07 10:24:14

微软封装工具ImageX的应用!

本文中我们将会介绍Ximage的几个基本应用:映像创建、映像压缩、映像文件拆分以及应用映像。

本文的所有操作都需要在Windows PE下进行。虽然这可能没有在DOS环境下方便,不过用Windows PE取代DOS已经是一个必然的趋势,同时,Windows PE环境也使Ximage的适用范围更广。

我们都知道,传统的基于磁盘扇区的映像工具一般只能在Windows操作系统之外运行,因此都使用了专用的恢复环境,例如开发商提供的特殊版本的 DOS。但这就存在一个问题,主要是关于存储子系统的。现在我们使用的存储子系统规格越来越多,除了传统的 IDE,常见的还有SCSI、SATA,以及各种级别的RAID等,如何让映像工具支持这些不常用的存储子系统成了一个最大的问题。

以使用DOS作为恢复环境的映像工具为例,如果该工具没有自带用于RAID系统的DOS驱动程序,那么就无法使用它对RAID系统创建和恢复映像。但 Ximage解决了这一问题,它的恢复环境是Windows PE,这可以看作是一个省略了图形界面的Windows内核,因此任何磁盘子系统,只要提供了Windows下的驱动程序,就可以用于Windows PE。

使用过程中大家可能会注意到,用Windows PE光盘引导,进入Windows PE环境之前,屏幕上首先会显示“Press F6 to Install…”的字样,这和我们直接用光盘安装Windows操作系统时的选项类似。如果您使用了一些比较不常用的存储子系统,例如SCSI或者 RAID,就需要在这个界面上按下F6,然后提供所需的驱动程序,这样引导后Windows PE才可以识别出您的硬盘。

下文中,实验所用系统的设置如下:C盘安装操作系统,D盘是光驱,E盘用于保存创建的映像文件。不过当我们用Windows PE光盘引导计算机后情况有所变化,C盘依然是系统盘,但光驱成了X盘,Windows下的E盘成了Windows PE环境下的D盘。因此为了避免混淆,在Windows PE环境下的操作将会使用PE中的盘符名称,但在Windows环境下的操作将会使用Windows中的盘符。

创建映像

首先我们需要准备一台模板计算机,在这台计算机上安装打算批量部署的操作系统,并安装所有需要的驱动程序、应用软件、系统更新程序,同时我们还可以根据实际需要对系统和程序的各种

选项进行设置。设置完成之后运行sysprep.exe删除所有不必要的信息 ,并关闭计算机。

进行到这一步的时候,和使用传统的基于分区的影响工具部署都没有太大区别,不过接下来我们要使用微软自己的映像工具了。

假设我们希望使用默认设置创建一个C盘的映像,映像文件将以data.wim为名保存在D盘根目录下,并在创建完成后进行数据校验,那么我们可以使用这样一个命令:

ximage /capture c: d:\data.wim "Drive C " /verify

“/capture”参数的作用是创建映像文件,而该参数后面的“c:”则指定了要创建映像的目标分区。“d:\data.wim”这个参数指定了镜像文件的保存位置以及名称,“Drive C”参数定义了映像文件的描述,需要用引号引用。最后的“/verify”参数则会让Ximage创建完映像之后进行校验。当看到图1所示的界面时,表示我们的命令是正确的,程序正在创建C盘的映像。当屏幕显示“Successfully imaged c:\”的字样时表示映像已经创建完成了。

这时候我们就可以将创建出来的data.wim文件保存起来,并用于之后的部署了。这里还有一个有趣的功能需要提醒您:Ximage可以将创建出来的映像文件保存在预创建映像的分区上。例如本例中,我们就完全可以将data.wim保存在C盘,这其实是基于文件的映像工具和基于扇区的映像工具的最大不同。

压缩映像

当然,Ximage能做到的还有很多。有时我们可能会希望尽量减小生成的映像文件的体积,这时候就可以用到Ximage的压缩功能了。压缩参数有两个选项:Fast和Maximum,其中后者的压缩率更高一些,当然花费的时间也要长一些。还是上面的例子,如果需要以Maximum等级压缩创建出来的映像文件,可以使用这条命令:

ximage /compress maximum /capture c: d:\data2.wim “Drive C” /verify

遗憾的是该参数只能在创建映像文件的时候使用,对于已经创建好的映像文件,已经无法通过该参数进行压缩,或者更改压缩等级了。

拆分映像

如果您希望将创建出来的映像文件按照一定大小拆分,以便刻录到光盘或者保存到可以动存储介质上,那么可以使用Ximage的“/split”参数。例如,如果我们希望将之前创建的data.wim文件以640 MB为大小拆分,以便刻录到CD光盘上,那么可以使用这条命令:

ximage /split d:\data.wim d:\datasplited.swm 640

该操作将会创建一系列带有固定编号的.swm文件,例如我们要拆分的文件是data.wim,那么拆分后的文件就是data1.swm、 data2.swm等。该参数同样有些不足:首先,无法在创建映像文件的时候使用,只能在映像文件创建成功之后使用。另外,拆分的文件大小是以MB为单位指定的,如果我们需要以GB为单位拆分文件以便刻录DVD光盘上,显得不够灵活。

应用映像

我们已经创建好了系统映像文件,日后如果需要在多台计算机上部署,或者某台计算机的系统崩溃,就可以使用创建好的映像文件来恢复。恢复过程是非常简单的,依然需要进入到Windows PE环境下,然后使用“/apply”参数运行ximage.exe程序即可。

对于新计算机有一点需要注意,在使用Ximage安装操作系统映像之前,必须首先给硬盘分好区。您可以使用Windows PE自带的分区工具diskpart.exe进行。而如果您嫌麻烦,或者需要处理的计算机太多,也可以自己编写脚本,让Windows PE启动后自动进行分区操作。

假设我们要把之前创建的保存在D盘的data.wim文件重新恢复到C盘,那么可以首先格式化C盘,然后使用这条命令:

ximage /apply d:\data.wim 1 c: /verify

这里要注意映像名称后面的编号“1”,下文中我们将会介绍,Ximage可以把多个镜像文件附加到同一个映像中,那么在使用某个特定镜像部署系统,或者执行其他类似操作的时候,怎样从附加了多个镜像的映像文件中指定特定镜像呢?这里就需要使用编号了,如果希望对第几个镜像进行操作,在映像文件名称后添加该镜像的编号即可。

高级应用

除了上面介绍的功能,ximage还有很多功能可以适合不同情况。同样,下文将会通过几个具体的实例向您介绍。

文件附加

有时我们可能会遇到这样的情况:当我们安装好操作系统之后,需要创建一个映像文件;而安装完补丁程序以及驱动程序之后,需要创建另外一个映像;等安装完所有其他需要的应用程序,并进行过必要的设置之后,还需要创建第三个映像文件。这样的要求有一个特点,那就是三个映像文件中大部分数据都是相同的,而每次都是只有部分文件被增删或者更改。那么按照一般的做法,直接创建三个各自独立的映像文件,无疑浪费了大量的存储空间,而且映像文件太多也不利于日后的管理。

为了解决这个问题,Ximage中包含了一个叫做附加的功能。简单来说,该功能可以在一个映像文件中保存多个不同状态下的操作系统镜像。例如之前设想的情况,将操作系统在三个时候的不同状态全部附加到同一个映像文件中,这样,因为操作系统中有大量三个状态下没有发生任何更改的文件,因此这些文件实际上在映像文件中只需要保存一个实例,这就可以在压缩的基础上更进一步减小映像文件的体积。

注意,这里提到了两个名词:“映像”和“镜像”。为了方便叙述,下文对这两个名词的定义如下:对操作系统所在分区进行“复制”创建的文件称之为“镜像”,而多个“镜像”附加在一起即形成一个“映像”。

在上文的操作中我们已经对整个系统盘创建了一个完整映像data.wim,假设当时我们只是安装了操作系统,还没有装驱动和应用程序,那么现在我们可以启动到正常Windwos状态下,按照需要安装所有的驱动和程序,然后重启动计算机到Windows PE环境(别忘了运行sysprep.exe)。要创建新的镜像,并附加到现有的映像文件中,可以使用下列命令:

ximage /append c: d:\data.wim “Drive C 2” /verify。

“/append”的作用是将目标分区附加到现有文件,需要注意,如果已经使用了“/append”参数,就不需要同时使用“/capture”了。而后面的“d:\data.wim”则指定了要被附加的文件所在位置和名称。

注意,如果被附加的源映像文件被压缩过,那么附加上去的镜像文件就必须进行同样等级的压缩。

配置文件

Ximage的某些选项可以由配置文件指定,这样我们就可以预先编写好配置文件,然后一次执行,实现比较复杂的操作。要指定配置文件,需要以“/config”参数启动Ximage。配置文件中主要有三个字段,各自的含义如下。

[ExclusionList]
定义了使用“/capture”参数后被排除的文件和文件夹名称

[CompressionExclusionList]
定义了不被压缩的文件或文件夹名称,或者文件类型。这里可以使用通配符

[AlignmentList]
指定文件以64K为范围排列,这些文件将不会被压缩,而压缩后的文件将会以32K为范围排列。

我们只需要在文本编辑器,例如Windows记事本中按照上述规定的字段编写内容,然后将文件保存为.ini格式,就可以在使用ximage.exe的时候通过“/config”参数调用了。

打开Windows记事本或者其他任何文本编辑器,分别输入[ExclusionList]、[CompressionExclusionList]和[AlignmentList]三个字段,然后按照需要为这三个字段设定内容。

例如,如果我们希望在创建映像文件的时候跳过分页文件和休眠文件,那么就可以在[ExclusionList]字段下添加这两个文件的名称: “Hiberfil.sys”和“Pagefile.sys”。注意,每个文件要占用一行空间。如果我们希望在压缩文件的时候取消对所有扩展名为.zip 的文件的压缩(毕竟它们已经被压缩过了,再次压缩只能延长所需时间,体积的变化不会太明显),那么可以在 [CompressionExclusionList]字段下添加“*.zip”这一行内容。

注意:通常情况下,如果要使用配置文件,那么就必须在运行ximage命令的时候使用/config参数,并指定配置文件的位置。但如果我们预先将配置文件以wimscrīpt.ini为名保存在ximage.exe文件所在的文件夹下,那么以后运行的时候只要使用了“/capture”参数,该配置文件就会被自动加载,而不管我们有没有配合“/config”参数一起使用。

映像文件的维护

我们已经了解了如何创建和应用映像文件,那么日常维护方面,这种新的文件格式又能带给我们什么?需要注意,之前介绍的所有操作都是使用Ximage在Windows PE的命令行环境下运行,而接下来要介绍的一些功能在正常的Windows模式下就可以操作。

查看映像文件信息

我们首先继续讨论一下前文中存在的一个问题,对于附加了多个镜像的映像文件,可以通过添加编号的方式指定对哪个镜像进行操作。但是一旦时间长了,我们如何知道某个映像文件中有几个镜像,分别是什么内容?这就要用到Ximage的另一个参数“/info”了。

还是以上文创建的附加了多个镜像的映像文件data.wim为例,在Windows PE环境下,运行这样的命令:ximage /info d:\data.wim,我们可以看到,程序会自动显示一个以XML格式保存的文件,文件的内容就是该映像文件中所有附加的镜像文件的信息(图3)。这里面大家可以留意看“”这一字段的内容,这其实就是我们在使用 “/capture”参数创建映像时输入的描述。因此在使用的时候要注意输入详细的描述信息,方便日后的使用。

查看映像文件内容

随着使用时间的延长,管理员们可能需要管理越来越多各种用途的映像文件。如何快速从多个映像文件中找到自己的目标就显得非常重要。通过使用Ximage的 “/dir”参数,我们就可以直接把某个映像文件,甚至具体到其中附加的某个镜像的内容显示出来。该参数的使用方法是这样的:ximage /dir d:\data.wim 1。

首先让我们试试看使用“/dir”参数列出映像文件中具体某个镜像的内容。回到Windows正常状态下(注意,这一步操作不能在Windows PE环境下进行,必须回到Windows下),然后运行下列命令:

ximage /dir d:\data.wim 1

这将显示data.wim这个映像文件中包含的镜像内容(如果映像文件中包含了多个镜像,也可以通过编号指定具体镜像)。这里显示的内容非常多,查看起来很不方便,那么我们就可以使用这样的命令:

ximage /dir d:\data.wim 1 >d:\list.txt

该命令可以将显示的内容全部输出到D盘一个名为list.txt的文本文件中,使用文本编辑器查看和搜索具体文件就相当简单了。

这里有个问题需要注意,就算您的映像文件中只包含了一个镜像,在使用/dir参数的时候依然需要在文件名后面指定镜像编号,否则将无法列出其中的内容。暂时不清楚这是设计特性还是软件的Bug。

将映像文件内容映射为文件夹

除了使用“/dir”参数列出映像文件的概括内容,我们还可以使用“/mount”参数和“/unmount”参数将映像文件中具体的镜像映射为本地硬盘上的文件夹,并编辑其中的内容。“/mount”参数有两个,分别是“/mount”和“/mountrw”,其中前者可以将镜像映射为只读文件夹,而后者可以将镜像映射为可读写文件夹。

要注意,这两个命令都只能在Windows XP SP2、Windows Server 2003 SP1以及Windows Vista中使用。同时在映射之前,还要安装WIM FS插件,该插件在WAKI工具包中提供。

安装好插件之后,在命令提示行窗口内运行下列命令:

ximage /mountrw e:\c e:\data.wim 1

“e:\c”的含义是将镜像映射到E盘下一个名为“c”的文件夹中。如果该文件夹内当前有文件,那么在被映射的镜像卸载之前,原先的内容将无法访问。映射了镜像之后,我们就可以使用Windows资源管理器打开映射出来的文件夹,查看其中的内容,添加或者删除文件,或者像在操作本地硬盘那样进行其他操作。

因为我们之前使用的参数是“/mountrw”,这样映射出来的文件是可写的,因此当用完之后,为了使对文件的更改能够生效,我们需要使用 “/unmount”参数配合“/commit”选项,合并对映像文件的修改,并将其卸载。可以用这样的命令:ximage /unmount /commit e:\c。

镜像的提取和删除

有时候您可能会遇到这样的情况:一个映像文件中附加了很多不同环境的镜像文件,可其中一个镜像文件已经没用了。为了减少存储空间的占用,您可能希望删除不用的镜像文件。同时,您可能还会有这样的需求:想要将附加到一个映像文件中的独立镜像提取出来,做其他用途。这些任务依然可以通过Ximage的参数实现(本段内容需要在Windows PE环境下操作)。

要删除映像文件中附加的镜像,我们可以使用“/delete”参数,例如:ximage /delete d:\data.wim 1。如果希望将映像文件中的某个镜像提取出来,可以使用“/export”参数,例如:ximage /export d:\new.wim d:\data.wim 1。

注意,在提取镜像的时候一定要保证目标映像文件的所在分区具有足够的可用空间。如果可用空间不足,程序不会报错,依然会生成新的映像文件,但是文件本身是不完整的。

ximage.exe的不足

虽然优势很多,不过目前ximage.exe还有很多不足,主要表现在:

Ximage只能用于对完整的操作系统以及应用程序创建和应用映像。有些第三方的映像工具可以在操作系统和应用程序发生改变后对其创建“差异映像”,这个ximage.exe是做不到的。

Ximage只能创建和使用.wim(Windows Imaging)格式的映像文件,不支持使用其他第三方工具创建的映像。

对于同一个映像文件只能使用一种压缩等级,随后附加的镜像文件也必须使用和初始映像文件一样的压缩等级。
映像文件的映射只能在Windows XP SP2、Windows Server 2003 SP1或者Windows Vista下进行。但是Ximage可以对没有安装Service Pack的Windows XP和Windows Server 2003,以及任何版本的Windows 2000创建映像文件。

只有保存在NTFS文件系统下的映像文件才可以被映射为具有读/写权限的文件夹,而保存在FAT、FAT32、ISO或UDF文件系统下的映像文件只能被映射为只读文件夹。这主要是为了避免FAT/FAT32文件系统最大2GB文件的体积限制有可能导致的数据丢失。

该工具不具有磁盘操作能力,因为需要使用微软的其他工具,例如Diskpart以及Format准备用于卷映像的磁盘分区。
算是扫盲了
命令实列:

IMAGEX /CAPTURE
imagex /capture /compress fast c: G:\system.wim "Boot C"
//以标准压缩率创建当前C盘的Ximage映像保存在G:\system.wim,并以"Boot C"标识
WIM文件创建     /capture
压缩开关       /compress
压缩模式       fast (maximum none)
创建源       c:
创建文件       G:\system.wim
WIM文件映像名   "Boot C"

IMAGEX /APPEND
imagex /append d: G:\system.wim "Drive D"
//将当前D盘下的内空附加至G:\system.wim,并标识为"Drive D"
WIM文件追加     /append
追加源         d:
追加目的       G:\system.wim
追加映像名称     "Drive D"


IMAGEX /APPLY
imagex /apply G:\system.wim 1 C:\ /verify
//将G:\system.wim文件中的第一个映像"Boot C"恢复至当前C盘下,完成后检查文件
WIM文件恢复     /apply
源文件         G:\system.wim
目标路径       C:\
校检参数       /verify

IMAGEX /DELETE /?
imagex /delete G:\system.wim 2
//删除G:\system.wim第二个映像,即名为Drive D的映像
WIM映像删除     /delete
WIM文件       G:\system.wim
映像序号       2

IMAGEX /DIR
imagex /dir G:\system.wim 1
//显示G:\system.wim文件第一个映像"Boot C"内容
WIM映像查看     /dir
被查看WIM文件   G:\system.wim
被查看WIM文件序号 1

IMAGEX /INFO /?
imagex /info G:\system.wim
//显示G:\system.wim文件索引信息
WIM文件索引     /info
WIN文件       G:\system.wim

IMAGEX /EXPORT /?
imagex /export G:\system.wim 1 G:\newsys.wim "newsys"
//提取G:\system.wim文件中第一个映像"Boot C"并将其保存为一个新WIM文件G:\newsys.wim,标识为"newsys"
WIM文件提取     /export
被提取文件     G:\system.wim
被提取映像序号   1
提取至         G:\newsys.wim
标识为         "newsys"

IMAGEX /SPLIT /?
imagex /split G:\newsys.wim G:\splitsys.swm 640
//对G:\newsys.wim文件进行按自定义大小"640"分割为多个文件,并保存在G:盘以序列命名
WIM文件分割     /split
被分割文件     G:\newsys
分割大小(MB)     640

IMAGEX /MOUNT /?
IMAGEX /MOUNTRW /?
imagex /mount G:\system.wim 2 G:\mount
imagex /mountrw G:\system.wim 2 G:\mount
//将WIM文件G:\system.wim中第二个映像"Drive D"映射至G:\mount文件夹,/mountrw为可写
WIM文件映射只读   /mount
WIM文件映射读写   /mountrw(NTFS)
WIM文件       G:\system.wim
映像序号       2
映射路径       G:\mount

IMAGEX /UNMOUNT /?
imagex /unmount /commit G:\mount
//结束对G:\mount的映射,并将改变同步至G:\system.wim文件第二个映像中

wimscrīpt.ini

IMAGEX CAPTURE APPEND

[ExclusionList]
C:\Documents and Settings\Administrator\Local Settings\Temporary Files
Hiberfil.sys
Pagefile.sys

[CompressionExclusionList]
*.zip
*.rar
*.jpg
*.mp3

[AlignmentList]
阅读(1059) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~