Microsoft Deployment Toolkit
使用 MDT 和儲存單一版本
Joe Fox
過去您一直都是使用 Microsoft Deployment Toolkit (MDT) 來建立、維護和部署自訂的 Microsoft Windows 作業系統。因此您會有 Windows XP 到 Windows 7 等多種桌面映像,以及 Windows Server 2003、Windows Server 2008 等多種伺服器映像。而這些作業系統又可能各自產生一個以上的映像。比方說,您可能會有 Windows Server 2008 Standard 和 Enterprise 映像、32 位元和 64 位元映像等各種映像組合,不勝枚舉。為了容納您所建立和維護的這些映像,發佈共用也不斷在快速擴大,光要發佈個別的映像就必須用到好幾片 CD 或 DVD。您是否希望這些映像能夠整合起來呢?而從 Windows Vista 開始,Microsoft 已經能夠將多個作業系統安裝放到一片 DVD 上了,您為什麼不行?聽起來像不像您的情況呢?
這種情況屢見不鮮,我的疑慮也跟您一樣。答案是:您可以整合自訂映像,甚至也可能可以將多個映像安裝放到一片光碟上,但是在討論做法之前,讓我們先看看自從 Windows Vista 問世以來,映像處理發生了哪些變化。
WIM 格式
Microsoft Windows 映像檔案 (WIM) 格式最初是由 Microsoft Windows Vista 引介。WIM 格式是以檔案為主的磁碟格式,專門用來取代以磁區為主的常用磁碟格式。以磁區為主的格式過去是搭配 Microsoft 自動化部署服務 (ADS)、Microsoft XP Embedded (XPe) 使用,現在仍然普遍用於大部分其他商務映像處理解決方案上。這兩種檔案格式的不同點在於,以磁區為主的格式是根據實體磁碟的實際磁區加以擷取,而以檔案為主的格式只根據磁碟上的檔案進行擷取。
Microsoft 建立 WIM 格式是希望能夠有更大的彈性和控制能力。WIM 格式與硬體完全無關。您可以從任何系統進行擷取和部署。WIM 也可以離線提供,換句話說,您無需重建映像即可選擇性的新增、複製和刪除檔案、驅動程式,甚或套用修補程式。此外,您只要將 WIM 映像標示為可開機,就能由 WIM 中的一個映像啟動電腦。無論擷取 WIM 映像所在的磁碟多大或多小,您都可以將映像套用到任何大小的磁碟分割上。WIM 也容許您進行非破壞性的部署,也就是說,套用 WIM 並不會清除現有的磁碟資料。WIM 格式也可讓您將多個映像儲存在一個檔案中,它同時善用檔案資源和檔案壓縮技術的儲存單一版本,藉以縮小實際映像。WIM 也可以跨存於多片光碟,讓您使用不同的媒體來儲存,像是 CD 和 DVD。
儲存單一版本
您或許可以找出協助您達到映像整合目標的功能:也就是能夠將多個映像儲存在單一 WIM、檔案壓縮和儲存單一版本 (SIS) 中。但到底什麼是 SIS?SIS 是一種技術,通常稱為儲存單一版本。這項技術被廣泛用於包括 Microsoft Storage Server 和 Microsoft Exchange 在內等多種 Microsoft 產品上,並且從 Windows 2000 Server 就開始運用了。SIS 可以移除重複檔案,充分利用儲存區容量。它利用安全雜湊演算法 1 (SHA-1) 針對映像中的每一個檔案決定雜湊值。而 SIS 就是根據這個雜湊值找出重複檔案,明確地將重複檔案更換為檔案系統連結,連至公用儲存區所容納的單一版本檔案。相較於各自存在的多個映像檔案,這種結合作業系統映像的方式,常常可以縮小 60% 以上的大小 (請參閱 [圖 1],其中 W2k8.wim 代表三個合而為一的 WIM)。
[圖 1] 個別存在的 WIM 大小與合而為一的 WIM 大小
從多個映像建立一個 WIM
您可以採用同樣的標準映像擷取程序,直接在 MDT建立一個含多個映像的 WIM。方法是啟動映像部署,然後隨著部署精靈逐步進行。到了 [Capture (擷取)] 畫面時,請選 [Capture (擷取)],然後為 WIM 命名,或者接受預設值,接下來就開始進行部署。待部署和擷取完成之後,再啟動另一個映像部署,然後隨著部署精靈逐步進行。到了 [Capture (擷取)] 畫面時,選取 [Capture (擷取)],然後輸入與前一個擷取完全一樣的名稱和位置。實際完成映像擷取的 MDT ZTIBackup 指令碼會感應到 WIM 已經存在,並將新映像附加到現有的 WIM 上。在執行這個作業時,ZTIBackup 指令碼會以工作順序識別碼和磁碟機代號建立映像名稱。由於 WIM 中的每一個映像都必須具備唯一的映像名稱,因此若要使用相同的工作順序將多個映像附加到同一個 WIM 上,您必須自訂預設 MDT 指令碼,或是手動修改 WIM。而使用個別獨立的工作順序,則無需經過自訂,即可將映像附加到 MDT 中的 WIM。
現在讓我們回頭看看最先的案例。現在您知道您可以整合自訂映像,而且可以在使用 MDT 建立和擷取新映像時這麼做,但是對於您已經建好的 WIM,該如何整合呢?您過去所做的苦工,難道現在要一切歸零,重新開始嗎?您非得再重新擷取所有的自訂映像不可嗎?答案是不必。您可以利用 ImageX 整合所有現有的自訂映像。
ImageX 是免費的命令列工具,它是 Microsoft Windows 自動化安裝套件 (WAIK) 的一部分。MDT 在許多建立、管理和部署自訂映像的程序中,其實都有用到 ImageX。MDT 利用 ImageX append 參數,將映像附加到現有的 WIM 上。但是 ImageX 還有一個選項可以讓您建立一個包含多個映像的 WIM — 即 export 參數。export 參數的目的,是從一個 WIM 匯出一個映像檔,並且根據該 export 參數建立一個新的 WIM。比方說,假設您有一個 WIM,名叫 W2K8ENTX64.wim,而您想要建立一個新的 WIM,名叫 W2K8.wim。這時候,您可以執行以下命令,建立新的 WIM:
ImageX /export W2K8STDSP2X64.wim 1 W2K8.wim "Windows Server 2008 Standard SP2 X64"
在這個命令中,「Windows Server 2008 Standard SP2 X64」是指派給要匯出之映像的名稱。假設現在您要在 W2K8.wim 加入另一個映像。這時候,您可以執行以下命令,建立新的 WIM:
ImageX /export W2K8ENTSP2X64.wim 1 W2K8.wim "Windows Server 2008 Enterprise SP2 X64"
我們在前面提過,當您將多個映像組合成一個 WIM 時,每一個映像都必須取一個唯一的映像名稱。除了唯一的映像名稱之外,每一個映像還會指派一個映像索引編號。這些號碼是依照映像匯入到 WIM 檔案的時間順序加以指派,不能更改。在我們的範例中,Windows Server 2008 Standard SP2 X64 的索引編號是 1,而 Windows Server 2008 Enterprise SP2 X64 的索引編號是 2。無論您是修改映像或是從一個包含多個映像的 WIM 安裝映像,都必須提供這個映像索引編號,才能在 WIM 中正確識別該映像。
無論您是從命令列使用 MDT 還是 ImageX,一次都只能將一個映像合併到一個現有的 WIM 中。因此對於每一項您想要合併到現有 WIM 的連續擷取作業,都必須等待前一個部署和擷取程序完成之後,才能開始進行下一個作業。這兩個 Imagex 參數都會使用先前提到的雜湊演算法,在 WIM 儲存映像時,消除重複檔案。
部署多個映像
知道如何建立含多個作業系統的單一 WIM 後,要如何部署它呢?要部署 WIM,必須執行以下三個步驟:
- 將 WIM 匯入到 MDT
- 建立新的工作順序,或修改現有的工作順序
- 建立媒體
步驟 1:將 WIM 匯入到 MDT
首先您必須將 WIM 當作作業系統匯入到 MDT,就像您處理其他任何自訂作業系統映像一樣。完成作業系統匯入精靈之後,請選取 [Operating Systems (作業系統)] 資料夾,這時候您應該會看到 WIM 檔案中所有以個別作業系統形式列出的映像。每一個作業系統的顯示名稱,是根據您將映像新增到 WIM 的方式而定。比方說,如果您是以 MDT 建立 SIS WIM,則每一個唯一映像會使用工作順序識別碼的標題來建立該映像 (W2K8STDSP2X64CDrive、W2K8ENTSP2X64CDrive 和 W2K8DATACSP2X64CDrive),以上一個範例來說,我們看到的映像有 Windows Server 2008 Standard SP2 x64、Windows Server 2008 Enterprise SP2 x64 和 Windows Server 2008 Datacenter SP2 x64。MDT 中的顯示名稱,也可以在它們匯入到 [Operating Systems (作業系統)] 資料夾之後,直接從 MDT 主控台更新。
步驟 2:建立新的工作順序,或修改現有的工作順序
待作業系統匯入到 MDT 之後,您就可以建立部署這些映像的部署工作順序了。但如果您要更新現有的工作順序,這就有點困難了,不過也不是做不到。首先您必須進入工作順序的屬性。如果是 Windows Vista 和更新版本的 Microsoft 作業系統,則必須修改 Unattend.xml 檔,以便採用新的 WIM 和映像索引編號來套用映像。您可以在現有的 [Task Sequence properties (工作順序屬性)] 視窗選取 [OS Info (作業系統資訊)] 索引標籤,並且選取編輯 unattend.xml 檔案按鈕來更新 Unattend.xml 檔案。這時候會開啟 Windows 系統映像管理員 (WSIM) 應用程式,如 [圖 2] 所示。在 WSIM 中,請修改下列項目,以採用新的 WIM 檔和映像索引編號:
Unattend | Components | 1 windowsPE | Microsoft-Windows-Setup |ImageInstall | OSImage | InstallFrom |Path: .\Operating Systems\<WIMFile>Unattend | Components | 1 windowsPE | Microsoft-Windows-Setup |ImageInstall | OSImage | InstallFrom | Path |MetaData[Key="/image/index"] |Value: 1
[圖 2] 顯示 Unattend.xml 的 Windows 系統映像管理員應用程式
值 1 是指映像索引編號。您可以看看 MDT 中作業系統屬性的 [General (一般)] 索引標籤,來判斷映像索引編號 (請參閱 [圖 3])。
[圖 3] MDT 中的作業系統屬性
更新 Unattend.xml 檔案之後,請在 [Task Sequence properties (工作順序屬性)] 的 [Task Sequence (工作順序)] 索引標籤上,找出「Install Operating System (安裝作業系統)」步驟,選取新的作業系統來安裝。對於 Windows Vista 之前的作業系統版本,不必修改 Unattend.xml,只需更新「Install Operating System (安裝作業系統)」步驟即可。
步驟 3:建立媒體
現在我們已經建立包含所有自訂映像的新 WIM,也更新現有的工作順序以便從這個 WIM 部署映像,或者已徹底建立新的工作順序了。接下來就是從一片 CD 或 DVD,部署新 WIM 中所有的作業系統。首先請根據您所用的 MDT 版本,建立一個新的媒體部署點 (MDT 2008) 或選擇設定檔 (MDT 2010)。在媒體部署點或選擇設定檔的屬性中,請選取所有屬於您 WIM 的部署工作順序、您部署工作順序所需的驅動程式,以及部署所需的任何應用程式。選取所有適合您媒體點的屬性之後,再選取更新以產生新的 ISO。
自 MDT 2010 之後,當您選擇同時產生 32 和 64 位元媒體時,在 WINPE 開機過程中會出現新的提示 (請參閱 [圖 4])。這個提示可讓您在 32 位元和 64 位元的 WINPE 環境之間擇其一,讓您藉由同時支援 32 位元和 64 位元環境,進一步的整合媒體式部署。如此便不需要個別的 LiteTouch_x86 和 LiteTouch_x64 ISO 來進行媒體部署了。
[圖 4] WINPE 開機選項
啟用含 32 位元和 64 位元映像之單一 WIM 的部署功能
您分別建立了 32 位元和 64 位元的 WIM,但能夠進一步整合它們嗎?建立一個包含 32 位元和 64 位元映像的 WIM 有什麼好處嗎?所有的 Microsoft 64 位元作業系統都包含 WoW64,它是作業系統的子系統,可讓您在 64 位元作業系統上執行 32 位元應用程式。由於 WoW64 子系統與 32 位元版作業系統共用許多檔案,因此在使用 SIS 時,結合兩種架構確實有所助益。但是有一個問題:MDT 並不支援部署含現成 32 位元和 64 位元映像的單一 WIM。這時您可能會自問,如果 MDT 不支援它,那還提它作什麼?讓我們先探討為什麼它無法現用。
在以 MDT 部署 Windows Vista 和更新版本的 Microsoft 作業系統映像時,必須使用原始的安裝二進位檔,才能完成部署。這些安裝二進位檔在 32 位元和 64 位元版本是不一樣的,當您將作業系統匯入到 MDT 時,只能使用一種版本的安裝二進位檔。在進行部署時,MDT 會在作業系統資料夾尋找安裝二進位檔,作為部署之用。如果 MDT 找不到安裝二進位檔,就會尋找其他符合處理器架構的作業系統。
以我們的案例來說,必須在單一作業系統資料夾中包含兩種版本的安裝二進位檔。方法是將單一 WIM 以作業系統形式匯入到 MDT,然後選擇不含安裝檔。匯入完成之後,再瀏覽到部署共用的 WIM 資料夾位置,建立 x86 和 x64 兩個新資料夾。在這兩個資料夾中,分別將 32 位元版的 OEM 安裝媒體複製到 x86 資料夾,將 64 位元複製到 x64 資料夾。完成之後,再從 X86\Sources and X64\Sources 資料夾移除 install.wim。
現在我們的作業系統會內含兩種版本的安裝二進位檔,因此要搜尋這些資料夾,就必須修改 MDT。請在部署共用尋找 LTIApply.wsf,用文字編輯器開啟 LTIApply.wsf 檔。然後在 LTIApply.wsf 的 Function: ApplySetup() 中新增下列以黑底強調顯示的部分 (請參閱 [圖 5] 和 [圖 6])。
[圖 5] 第 1 項 LTIApply- ApplySetup() 修改
[圖 6] 第 2 項 LTIApply- ApplySetup() 修改
做了這些修改之後,MDT 就可以根據部署處理器架構在原始搜尋位置之外搜尋 x86 和 x64 資料夾了。但是目前只有 MDT 2010 支援從單一 WIM 部署 32 位元和 64 位元作業系統的功能,如果是 MDT 2008,仍需針對 32 位元和 64 位元映像使用各自的 WIM。在修改預設 MDT 指令碼時,請務必牢記,只要對 MDT 做任何升級的動作,都會覆寫您所做的修改。
無限制自訂
建立 WIM 格式並透過 MDT 散發,對於許多作業系統映像處理和部署方面的功能都有大幅度的提升。本文我們只探討了多種可藉由這兩種技術加以運用的技巧的其中一種。MDT 是一項強大的免費工具,可毫無限制地進行自訂,也可以加強和簡化您目前的映像處理程序。此外,它也可以讓您熟悉 Microsoft 映像處理程序,針對下一步做好準備,也就是使用 Microsoft System Center Configuration Manager 作業系統部署。
Joe Fox 是 Microsoft 諮詢服務的顧問,專門負責伺服器和桌面的部署與維護。您可以透過電子郵件與 Fox 連絡:Joe.Fox@microsoft.com。