第一篇 使用ImageX获取WES7镜像完成定制及部署
ImageX可以用来捕获WES7系统的镜像并将其创建为镜像文件(.wim格式),从而可以在离线状态下对WES7系统进行提取、部署、修改等操作。
可能之前您使用某些磁盘工具来做嵌入式产品的系统镜像备份、还原等。但事实证明,Windows Embedded开发工具包中的ImageX才是部署WES7系统的最佳工具,本文重点通过动手实例来演示ImageX在Windows Embedded产品开发过程中的用法。
实验环境:
建议您准备目标机和开发机两台实验设备,目标机上安装有定制的WES7系统,开发机上安装有Win7操作系统和WES开发环境。
实验步骤:
1. 首先确认一下目标机上的磁盘分区情况,本例中磁盘0是目标机的主硬盘,两个分区,C盘卷标为SYS,是主分区,约10GB;D盘卷标为DATA,约6.4GB,用于存放实验数据;磁盘1是从硬盘,只有一个分区即E盘,卷标为ImgTarget,约6GB,用于存放镜像文件。光驱为F盘,插入了IBW光盘。
2. 通过DiskPart查看当前磁盘分配情况。从IBW光盘启动目标机,在Install Windows界面点击Launch WinPE Command Prompt以进入WinPE环境,输入diskpart,在DISKPART>提示下输入list vol来查看当前设备上的磁盘分区情况。请注意,此时盘符分配情况发生了变化。一定要注意这点,通过对比卷标和磁盘大小,确定原来的D盘和E盘盘符互换了,而WinPE占用的盘符是X。
图1
3. 捕获WES7操作系统镜像。本例中,我们的目标机系统安装在C盘,现在要把它捕获为镜像文件(.wim格式),然后存放在D盘,即卷标为ImgTarget的分区上。使用命令exit退出diskpart,然后键入以下命令来捕获镜像:
Imagex /capture c: d:\ImgOfWES7_0216.wim “capture WES7 by ImageX” /verify
/capture表示捕获卷镜像到一个wim文件中,接着是目标卷的路径,然后是镜像名称的全路径,双引号里面是该镜像的名字,最后是启用文件资源确认。
4. 看到如下界面时,表示命令正确,ImageX开始为您的WES7工作了,百分比显示进度,还有估算的剩余时间。
图2
当看到”Successfully imaged …”时表示捕获成功。
备注:还有一个参数/compress,它表示可以将镜像文件压缩,以减小其体积,一共有maximun,fast,none三个值,分别表示最大压缩、最快压缩、不压缩。
5. /append参数可以将已有的镜像文件扩展,例如,您的WES7刚刚安装完毕,需要做一下备份,而在安装一些软件并进行更改后又需要做一个镜像,这种情况下可以将一类镜像文件集成到同一个镜像文件中。或者如果您的目标设备上有两个分区,也可以分别将两个分区捕获到同一个镜像文件中。我们在WinPE中键入以下命令:
Imagex /append e: d:\ImgOfWES7_0216.wim “capture DATA by ImageX” /verify
这表示将E盘捕获至之前创建的镜像文件中。
6. 使用/apply参数可以将WES7镜像应用到目标设备中。在保证捕获镜像时的设备和目标设备基本一致的前提下(这包括硬件配置和磁盘分区的一致),可以将捕获到的镜像部署到目标设备上,在WinPE中键入以下命令:
Imagex /apply d:\ImgOfWES7_0216.wim 1 c:
/apply参数后面是镜像文件的全路径,接着要跟上wim文件中的镜像序号,然后是目标卷的路径。
与/capture参数类似,如果命令正确解析,会显示百分比进度和估算的剩余时间,当出现”Successfully applied image.”时表示恢复镜像成功。
7. WIM文件中可以存放多个镜像文件,如果不确定要恢复哪个镜像,可以通过/info参数来查看一下其中的镜像信息。在WinPE中键入:
Imagex /info d:\ImgOfWES7_0216.wim
返回镜像文件的XML格式描述。
图3
Image Count处显示该文件中有两个镜像,找到镜像索引是1的区块,<NAME></NAME>标记中显示的是用/capture参数时双引号中的该镜像名字,据此可以判断要恢复哪个镜像至目标分区。
8. 查看一下提取到的ImgOfWES7_0216.wim文件大小大约是877MB,假设要将它刻录在CD光盘上,那么可以用/split参数将其分成600MB大小的若干文件(.swm格式),以利于刻录。在WinPE中键入:
Imagex /split d:\ImgOfWES7_0216.wim d:\ImgOfWES7_0216.swm 600
/split参数后面跟原镜像全路径,接着是要目标全路径,注意用了swm格式,最后是期望的镜像大小,默认单位为MB。
命令提示成功完成后,我们可以看到原镜像文件已被分成了两个swm文件,且第二个往后的名字自动加了数字2。
9. 使用/dir参数可以列出镜像包含的所有文件和文件夹清单,如果要显示刚才镜像文件中的镜像1,因为内容太多屏幕会滚动很长时间,这时可以使用>d:\list.txt来将结果导入到目标文件中,方便用文本编辑器查看。
10. 参数/mount参数以只读方式将WIM文件加载到指定的文件夹,方便查看镜像内容。参数/moutrw是有了写的权限。下面尝试一下对其中一个镜像进行更改,在命令提示符中键入:
Imagex /mountrw e:\ImgOfWES7_0216.wim 2 e:\mount
将镜像文件中的第二个镜像,也就是我们对DATA盘做的镜像加载到E盘mount目录下,打开该目录,看到原来该盘中的数据。可以在该目录下新建一个记事本文档,输入一些字符并保存。然后在命令提示符中键入:
Imagex /unmount /commit e:\mount
/unmount表示将加载到mount文件夹的镜像卸载,/commit表示将所做的更改提交。然后结合/dir参数就可以看到效果,在命令提示符中键入:
Imagex /dir e:\ImgOfWES7_0216.wim 2
可以看到刚才新建的记事本文档已经进去了。应用/apply参数就可以把修改后的镜像提交到目标分区,很方便。
上面是一系列使用ImageX时的镜像操作方法,下面再扩展一下其用法:
1. 参数/export用于将镜像文件中一个标记的镜像导出到另一个WIM文件中。具体用法如:
Imagex /export d:\ImgOfWES7_0216.wim 2 d:\ImgNew.wim
指定好原镜像路径,其中对应的镜像编号和目标镜像路径,待命令成功执行后,就可以看到D盘出现了新的WIM文件,里面有刚才导出的镜像。
2. 参数/delete用来移除包含多个卷镜像的WIM格式镜像文件中指定的卷镜像。可以尝试移除上例中的数据盘镜像。在WinPE中键入:
Imagex /delete d:\ImgOfWES7_0216.wim 2
命令成功执行后通过/info参数来观察,看到该镜像文件中只有一个镜像了。
3. Wimscript.ini是为了防止ImageX在获取镜像时遇到锁定文件或文件夹造成失败而设计的,通过它可以列出一些排除在ImageX捕获之外的文件和文件夹,它应当位于与ImageX同一目录中,ImageX的/capture参数可以自动加载它。以下是它的示例:
[ExclusionList] //被排除的文件和文件名字
"System Volume Information"
RECYCLER
[CompressionExclusionList] //不被压缩的文件或文件夹名称或者文件类型,可以使用通配符
*.mp3
*.zip
----------------------------------------------------------------
如果您有任何问题,可以联系作者:WESfan
BLOG:
http://wesfan.blog.51cto.com
微软中文技术论坛:
http://social.microsoft.com/Forums/zh-CN/category/embeddedtechnologycn
第二篇 Windows 7 – VHD Boot – Setup Guideline
So how do you install a VHD-Boot machine?
- Boot the system with a setup DVD or USB stick.
- At the setup screen, don’t choose “Install Now”, but press “Shift-F10” to get into command line mode[thanks to the many feedbacks for this shortcut!].
- Enter diskpart to start the partitioning utitlity.
- Create a new VHD file by entering
create vdisk file=”D:\pathToVhd.vhd” type=expandable maximum=maxsizeInMegabyte
For differencing VHDs you need to add an additional parameter parent=”D:\pathtoparent.vhd”.
- Now select the new VHD and attach it as a physical disk.
select vdisk file=”D:\pathToVhd.vhd”
attach vdisk
- After that switch back to the setup window (e.g. using ALT+TAB) and start the setup.
- Proceed the normal setup, but make sure you install to the correct disk (normally the last one), ignore the “Windows cannot install to this disk” warning!!
At next startup, you’ll see Windows 7 in the boot menu!
Optional: If you want to add a VHD manually to the boot menu, you just need to copy an existing entry and set some parameters:
bcdedit /copy {originalguid} /d "New Windows 7 Installation"
bcdedit /set {newguid} device vhd=[D:]\Image.vhd
bcdedit /set {newguid} osdevice vhd=[D:]\Image.vhd
bcdedit /set {newguid} detecthal on