來自:微軟嵌入式中文社區(http://www.msembed.com/) 樊成虎 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的區塊, 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 |