微软FixIt 2011-03-22
本文的所有操作都需要在Windows PE下进行。虽然这可能没有在DOS环境下方便,不过用Windows PE取代DOS已经是一个必然的趋势,同时,Windows PE环境也使imagex的适用范围更广。
本文的所有操作都需要在Windows PE下进行。虽然这可能没有在DOS环境下方便,不过用Windows PE取代DOS已经是一个必然的趋势,同时,Windows PE环境也使imagex的适用范围更广。
我们都知道,传统的基于磁盘扇区的映像工具一般只能在Windows操作系统之外运行,因此都使用了专用的恢复环境,例如软件开发商提供的特殊 版本的 DOS。但这就存在一个问题,主要是关于存储子系统的。现在我们使用的存储子系统规格越来越多,除了传统的 IDE,常见的还有SCSI、SATA,以及各种级别的RAID等,如何让映像工具支持这些不常用的存储子系统成了一个最大的问题。
以使用DOS作为恢复环境的映像工具为例,如果该工具没有自带用于RAID系统的DOS驱动程序,那么就无法使用它对RAID系统创建和恢复映 像。但 imagex解决了这一问题,它的恢复环境是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盘根目录下,并在创建完成后进行数据校验,那么我们可以使用这样一个命令:
imagex /capture c: d:\data.wim "Drive C " /verify
“/capture”参数的作用是创建映像文件,而该参数后面的“c:”则指定了要创建映像的目标分区。“d:\data.wim”这个参数指 定了镜像文件的保存位置以及名称,“Drive C”参数定义了映像文件的描述,需要用引号引用。最后的“/verify”参数则会让imagex创建完映像之后进行校验。当看到图1所示的界面时,表示 我们的命令是正确的,程序正在创建C盘的映像。当屏幕显示“Successfully imaged c:\”的字样时表示映像已经创建完成了。
当然,imagex能做到的还有很多。有时我们可能会希望尽量减小生成的映像文件的体积,这时候就可以用到imagex的压缩功能了。压缩参数有两个选项:Fast和Maximum,其中后者的压缩率更高一些,当然花费的时间也要长一些。还是上面的例子,如果需要以Maximum等级压缩创建出来的映像文件,可以使用这条命令:
imagex /compress maximum /capture c: d:\data2.wim “Drive C” /verify
遗憾的是该参数只能在创建映像文件的时候使用,对于已经创建好的映像文件,已经无法通过该参数进行压缩,或者更改压缩等级了。
拆分映像
如果您希望将创建出来的映像文件按照一定大小拆分,以便刻录到光盘或者保存到其他可以动存储介质上,那么可以使用imagex的 “/split”参数。例如,如果我们希望将之前创建的data.wim文件以640 MB为大小拆分,以便刻录到CD光盘上,那么可以使用这条命令:
imagex /split d:\data.wim d:\datasplited.swm 640
该操作将会创建一系列带有固定编号的.swm文件,例如我们要拆分的文件是data.wim,那么拆分后的文件就是data1.swm、 data2.swm等。该参数同样有些不足:首先,无法在创建映像文件的时候使用,只能在映像文件创建成功之后使用。另外,拆分的文件大小是以MB为单位 指定的,如果我们需要以GB为单位拆分文件以便刻录DVD光盘上,显得不够灵活。
应用映像
我们已经创建好了系统映像文件,日后如果需要在多台计算机上部署,或者某台计算机的系统崩溃,就可以使用创建好的映像文件来恢复。恢复过程是非常简单的,依然需要进入到Windows PE环境下,然后使用“/apply”参数运行imagex.exe程序即可。
对于新计算机有一点需要注意,在使用imagex安装操作系统映像之前,必须首先给硬盘分好区。您可以使用Windows PE自带的分区工具diskpart.exe进行。而如果您嫌麻烦,或者需要处理的计算机太多,也可以自己编写脚本,让Windows PE启动后自动进行分区操作。
假设我们要把之前创建的保存在D盘的data.wim文件重新恢复到C盘,那么可以首先格式化C盘,然后使用这条命令:
imagex /apply d:\data.wim 1 c: /verify
除了上面介绍的功能,imagex还有很多功能可以适合不同情况。同样,下文将会通过几个具体的实例向您介绍。
文件附加
有时我们可能会遇到这样的情况:当我们安装好操作系统之后,需要创建一个映像文件;而安装完补丁程序以及驱动程序之后,需要创建另外一个映像; 等安装完所有其他需要的应用程序,并进行过必要的设置之后,还需要创建第三个映像文件。这样的要求有一个特点,那就是三个映像文件中大部分数据都是相同 的,而每次都是只有部分文件被增删或者更改。那么按照一般的做法,直接创建三个各自独立的映像文件,无疑浪费了大量的存储空间,而且映像文件太多也不利于 日后的管理。
为了解决这个问题,imagex中包含了一个叫做附加的功能。简单来说,该功能可以在一个映像文件中保存多个不同状态下的操作系统镜像。例如之 前设想的情况,将操作系统在三个时候的不同状态全部附加到同一个映像文件中,这样,因为操作系统中有大量三个状态下没有发生任何更改的文件,因此这些文件 实际上在映像文件中只需要保存一个实例,这就可以在压缩的基础上更进一步减小映像文件的体积。
注意,这里提到了两个名词:“映像”和“镜像”。为了方便叙述,下文对这两个名词的定义如下:对操作系统所在分区进行“复制”创建的文件称之为“镜像”,而多个“镜像”附加在一起即形成一个“映像”。
在上文的操作中我们已经对整个系统盘创建了一个完整映像data.wim,假设当时我们只是安装了操作系统,还没有装驱动和应用程序,那么现在 我们可以启动到正常Windwos状态下,按照需要安装所有的驱动和程序,然后重启动计算机到Windows PE环境(别忘了运行sysprep.exe)。要创建新的镜像,并附加到现有的映像文件中,可以使用下列命令:
imagex /append c: d:\data.wim “Drive C 2” /verify。
“/append”的作用是将目标分区附加到现有文件,需要注意,如果已经使用了“/append”参数,就不需要同时使用“/capture”了。而后面的“d:\data.wim”则指定了要被附加的文件所在位置和名称。
imagex的某些选项可以由配置文件指定,这样我们就可以预先编写好配置文件,然后一次执行,实现比较复杂的操作。要指定配置文件,需要以“/config”参数启动imagex。配置文件中主要有三个字段,各自的含义如下。
[ExclusionList]
定义了使用“/capture”参数后被排除的文件和文件夹名称
[CompressionExclusionList]
定义了不被压缩的文件或文件夹名称,或者文件类型。这里可以使用通配符
[AlignmentList]
指定文件以64K为范围排列,这些文件将不会被压缩,而压缩后的文件将会以32K为范围排列。
我们只需要在文本编辑器,例如Windows记事本中按照上述规定的字段编写内容,然后将文件保存为.ini格式,就可以在使用imagex.exe的时候通过“/config”参数调用了。
打开Windows记事本或者其他任何文本编辑器,分别输入[ExclusionList]、[CompressionExclusionList]和[AlignmentList]三个字段,然后按照需要为这三个字段设定内容。
例如,如果我们希望在创建映像文件的时候跳过分页文件和休眠文件,那么就可以在[ExclusionList]字段下添加这两个文件的名称: “Hiberfil.sys”和“Pagefile.sys”。注意,每个文件要占用一行空间。如果我们希望在压缩文件的时候取消对所有扩展名为.zip 的文件的压缩(毕竟它们已经被压缩过了,再次压缩只能延长所需时间,体积的变化不会太明显),那么可以在 [CompressionExclusionList]字段下添加“*.zip”这一行内容。
我们已经了解了如何创建和应用映像文件,那么日常维护方面,这种新的文件格式又能带给我们什么?需要注意,之前介绍的所有操作都是使用imagex在Windows PE的命令行环境下运行,而接下来要介绍的一些功能在正常的Windows模式下就可以操作。
查看映像文件信息
我们首先继续讨论一下前文中存在的一个问题,对于附加了多个镜像的映像文件,可以通过添加编号的方式指定对哪个镜像进行操作。但是一旦时间长了,我们如何知道某个映像文件中有几个镜像,分别是什么内容?这就要用到imagex的另一个参数“/info”了。
还是以上文创建的附加了多个镜像的映像文件data.wim为例,在Windows PE环境下,运行这样的命令:imagex /info d:\data.wim,我们可以看到,程序会自动显示一个以XML格式保存的文件,文件的内容就是该映像文件中所有附加的镜像文件的信息(图3)。这里 面大家可以留意看“”这一字段的内容,这其实就是我们在使用 “/capture”参数创建映像时输入的描述。因此在使用的时候要注意输入详细的描述信息,方便日后的使用。
查看映像文件内容
随着使用时间的延长,管理员们可能需要管理越来越多各种用途的映像文件。如何快速从多个映像文件中找到自己的目标就显得非常重要。通过使用 imagex的 “/dir”参数,我们就可以直接把某个映像文件,甚至具体到其中附加的某个镜像的内容显示出来。该参数的使用方法是这样的:imagex /dir d:\data.wim 1。
首先让我们试试看使用“/dir”参数列出映像文件中具体某个镜像的内容。回到Windows正常状态下(注意,这一步操作不能在Windows PE环境下进行,必须回到Windows下),然后运行下列命令:
imagex /dir d:\data.wim 1
这将显示data.wim这个映像文件中包含的镜像内容(如果映像文件中包含了多个镜像,也可以通过编号指定具体镜像)。这里显示的内容非常多,查看起来很不方便,那么我们就可以使用这样的命令:
imagex /dir d:\data.wim 1 >d:\list.txt
该命令可以将显示的内容全部输出到D盘一个名为list.txt的文本文件中,使用文本编辑器查看和搜索具体文件就相当简单了。
除了使用“/dir”参数列出映像文件的概括内容,我们还可以使用“/mount”参数和“/unmount”参数将映像文件中具体的镜像映射 为本地硬盘上的文件夹,并编辑其中的内容。“/mount”参数有两个,分别是“/mount”和“/mountrw”,其中前者可以将镜像映射为只读文 件夹,而后者可以将镜像映射为可读写文件夹。
要注意,这两个命令都只能在Windows XP SP2、Windows Server 2003 SP1以及Windows Vista中使用。同时在映射之前,还要安装WIM FS插件,该插件在WAKI工具包中提供。
安装好插件之后,在命令提示行窗口内运行下列命令:
imagex /mountrw e:\c e:\data.wim 1
“e:\c”的含义是将镜像映射到E盘下一个名为“c”的文件夹中。如果该文件夹内当前有文件,那么在被映射的镜像卸载之前,原先的内容将无法 访问。映射了镜像之后,我们就可以使用Windows资源管理器打开映射出来的文件夹,查看其中的内容,添加或者删除文件,或者像在操作本地硬盘那样进行 其他操作。
镜像的提取和删除
有时候您可能会遇到这样的情况:一个映像文件中附加了很多不同环境的镜像文件,可其中一个镜像文件已经没用了。为了减少存储空间的占用,您可能 希望删除不用的镜像文件。同时,您可能还会有这样的需求:想要将附加到一个映像文件中的独立镜像提取出来,做其他用途。这些任务依然可以通过imagex 的参数实现(本段内容需要在Windows PE环境下操作)。
要删除映像文件中附加的镜像,我们可以使用“/delete”参数,例如:imagex /delete d:\data.wim 1。如果希望将映像文件中的某个镜像提取出来,可以使用“/export”参数,例如:imagex /export d:\new.wim d:\data.wim 1。
注意,在提取镜像的时候一定要保证目标映像文件的所在分区具有足够的可用空间。如果可用空间不足,程序不会报错,依然会生成新的映像文件,但是文件本身是不完整的。
imagex.exe的不足
虽然优势很多,不过目前imagex.exe还有很多不足,主要表现在:
imagex只能用于对完整的操作系统以及应用程序创建和应用映像。有些第三方的映像工具可以在操作系统和应用程序发生改变后对其创建“差异映像”,这个imagex.exe是做不到的。
imagex只能创建和使用.wim(Windows Imaging)格式的映像文件,不支持使用其他第三方工具创建的映像。
对于同一个映像文件只能使用一种压缩等级,随后附加的镜像文件也必须使用和初始映像文件一样的压缩等级。
映像文件的映射只能在Windows XP SP2、Windows Server 2003 SP1或者Windows Vista下进行。但是imagex可以对没有安装Service Pack的Windows XP和Windows Server 2003,以及任何版本的Windows 2000创建映像文件。
只有保存在NTFS文件系统下的映像文件才可以被映射为具有读/写权限的文件夹,而保存在FAT、FAT32、ISO或UDF文件系统下的映像文件只能被映射为只读文件夹。这主要是为了避免FAT/FAT32文件系统最大2GB文件的体积限制有可能导致的数据丢失。
该工具不具有磁盘操作能力,因为需要使用微软的其他工具,例如Diskpart以及Format准备用于卷映像的磁盘分区。