共用方式為


Windows Vista

準備迎接 Windows PE 2.0

Wes Miller

 

摘要:

  • Microsoft Windows Imaging 技術
  • 驅動程式更新和維修
  • 自訂自動安裝程式

在前兩期的 TechNet Magazine 中曾討論過 Windows 預先安裝環境 (Windows PE) 的歷史,內容涵蓋了各種設計決策,以及目前能夠使用 Windows® PE 的方式。而本文的重點將放在 Windows PE 2.0,這個版本將隨 Windows Vista™ 同步發行。不過,本文將不會深入討論如何使用個別功能。以下內容將著重在 Windows PE 2.0 中新功能和能力的概觀。在此僅提供一些實用的資訊,有關 Windows PE 2.0 的使用方式則將在未來的文章中詳細討論。

開始著手開發 Windows Vista 之初,Windows 安裝程式團隊 (我當時為成員之一) 的主要工作在於建立全新的安裝程式架構、建立協助部署的全新映像工具,以及設計取代遠端安裝服務 (RIS) 的方案。然而重點卻轉移到中間的 Windows PE 和 Windows XP Service Pack 2 (SP2),且又再接著轉移到 Windows Server® 2003 SP1。這表示 Windows Vista 中 Windows PE 的開發工作就此延後了一些時間。不過,這中間的 Windows PE 更新仍讓我們有機會提供一些原本打算納入 Windows PE 2.0 版中的功能,因此我們的工作並非完全延宕。

在定義要納入的新功能時,Windows PE 團隊將工作重點高度集中在 Windows PE 使用者的持續性與一般使用情況 (請參閱「Windows PE 2.0 新手」資訊看板)。現在就來看看有哪些主要新功能。

使用映像

您必須先瞭解一些關於 Microsoft® Windows Imaging (WIM) 技術與 Windows 部署服務的基本概念。WIM 是全新的設計,用於將 Windows 做為映像進行部署 (舊稱為 Sysprep 映像)。不過 WIM 不是以磁區為基礎 (如同大部分映像工具一般),而是以檔案為基礎。這表示不再需要複製硬碟的每一個磁區,WIM 會挑選每個檔案及其相關的中繼資料 (存取控制清單、短檔名和長檔名等),並且將資料保存在單一檔案中。

WIM 映像的其中一項主要優勢在於,單一 WIM 檔案可保存超過一個磁碟區 (每個檔案稱為一個磁碟區映像) 的副本。而且無論擷取的數量多寡,每一個檔案只會儲存一次。這稱為「單一執行個體」。功能上來說,這項技術與遠端安裝服務使用的技術相似,不過運用的科技則大異其趣。建立 WIM 映像的工具稱為 ImageX (請注意,此工具曾一度稱為 XImage,但是現在已更名)。

當我們開發 Windows Vista 及其新的映像式安裝程式引擎 (該引擎將使用 Windows PE 部署作業系統) 時,發現可以運用一些小技巧來節省媒體上的空間。當時我們不確定 Windows Vista 會以 CD 或 DVD 提供,因此傾向盡量縮減安裝程式本身佔用的磁碟空間。由於 CD 上組成 Windows PE 的所有檔案版本與一旁的 WIM 檔案中的檔案完全一致,因此就有了將 Windows PE 納入 WIM 檔案本身並且從中開機的想法。多虧了 Windows 核心作業系統團隊的某位架構設計師完成的卓越工作,讓我們的想法能夠在 "Longhorn" (現為 Windows Vista) 的 Developer Preview 於 2003 年專業開發人員大會發表前付諸實踐,製作出一系列原型並且整合到產品中。如今,Windows PE 存在媒體的一個 WIM 檔案 (boot.wim) 中,而安裝媒體則出現在另一個 WIM 檔案 (install.wim) 中。雖然原本在 Windows PE 和 Windows 之間想像的單一執行個體已不再是安裝媒體的一部分,Windows PE 仍然因壓縮於光碟片上並縮減佔用空間而獲益。由於 Windows PE 1.6 中整合了 RAMDisk 開機功能,換置媒體的能力 (在開機完成後移除初始的開機 CD/DVD) 也因早期 WIM 開機工作已完成而加入。

將 Windows PE 映像納入 WIM 與使用 ImageX 挑選檔案 (這部分的細節將在未來的文章中討論),以及提供 /boot 旗標給 ImageX 藉此將映像表示為可開機一樣簡單。請將這個映像想像為開機磁區。當 Windows 開機管理程式載入 WIM 檔時,/boot 旗標包含的標記就會指出 WIM 檔中的哪一個映像 (無論包含一個或多個) 可開機。請注意,只有 Windows PE 可從 WIM 檔開機。您無法從 WIM 啟動所有 Windows Vista。同時,WIM 是唯讀的,如同在 CD 或 DVD 上一般。因此,您無法從 Windows PE 的 WIM 映像開機,也無法修改任何檔案。若要對 Windows PE 進行任何變更,則必須修改 WIM 本身。

處理驅動程式

對於 Windows PE,我們總是將焦點放在大量存放裝置和網路裝置的支援上。然而,Windows PE 偶爾仍會缺乏新系統上某些裝置的支援。Windows PE 1.5 中已包含一些新增裝置驅動程式的改善支援,而 Windows PE 2.0 則進一步讓此功能更加完善。現已支援所有類型的裝置,並且開機之後隨即運作,不再需要 factory.exe 或 drvinst.exe。若要在 Windows PE 2.0 中加入新的裝置驅動程式,只要執行新的 peimg.exe 工具就會自動加入驅動程式。語法相當簡單,如下所示:

peimg.exe /inf drivername.inf builddirectory\Windows

只要將 drivername 取代為 .inf (可接受萬用字元如 net*.inf) 的名稱,並且將 builddirectory 取代為建立 Windows PE 映像所在的目錄名稱即可。

塗銷空間

在 Windows PE 下執行的應用程式經常面臨的一項問題為,許多 Windows 應用程式 (甚至許多 Windows 元件本身) 是準備在可寫入的存放區上執行。但是從唯讀媒體 (例如 CD-R) 執行時,許多應用程式會出現不良反應。例如,當我初次嘗試在 Windows PE 下執行 Microsoft Internet Explorer® 時 (最後僅嘗試 MSHTA,或稱 Microsoft HTML 應用程式 (Windows 元件)),主要的 DLL 無法註冊,因為這些 DLL 需要可寫入的存放區,才能在註冊程序期間完成某些必要的工作。

在 Windows PE 2.0 中已不會發生這個問題,因為現在有多達 32MB 的塗銷空間可讓檔案系統寫入。因此,之前因 Windows PE 本身為唯讀而無法運作的元件現在將可以運作,因為這些元件現在可以寫入需要的磁碟中。不過這與用於塗銷空間的 RAMDrive 不同 (如 Windows PE 使用者所慣用),其不同之處在於,塗銷空間與開機磁碟區位於相同的磁碟區上,而不是另一個暫時的磁碟。

選用元件

如同舊版 Windows PE,新版同樣提供選用的元件,可用來加入更多功能 (當然,這些元件會增加大小,而這也是為什麼它們僅為選用的原因)。不過仍然支援 Windows Script Host (WSH)、Windows Management Instrumentation (WMI) 及 MSHTA。現在您可以加入 MSXML、Windows Vista 修復環境、額外的 Windows 字型,以及正式 Microsoft Data Access Components (MDAC) 的支援,其取代之前支援 SQL 的舊版 ADO (包括部分而非全部的 MDAC 支援)。不過,最重要的變更在於能夠輕鬆加入這些元件。您不再需要透過困難的 WSH 指令碼實作這些元件,只要使用 peimg.exe (之前提過用來加入驅動程式的同一項工具) 就能輕鬆加入或移除這些元件。

語言套件

Windows Vista 的其中一項原始的宗旨為採用多語言使用者介面 (MUI) 的概念 (這個概念是在 Windows 2000 中初次採用,並於 Windows XP 中進一步改善),並且在整個作業系統中實作此概念。在 Windows 2000 和 Windows XP 中,您可以指定英文以外的語言,但是 MUI 本身則倚賴英文版的作業系統才能開始執行。這表示,只要英文版存在,您就可以擁有其他任何語言。

不過,在 Windows Vista 中這種情況已有所改變。雖然在此將不會詳述所有細節,但仍必須說明這是 Windows PE 的重大變革。以往並未在舊版的 Windows PE 下正式支援 MUI。您必須從 Windows 中的當地語系化語言建立語言支援。現在,加入或變更語言支援與其他任何選用元件的操作方式相同,亦即使用 peimg.exe 即可新增或移除語言套件,以因應特殊的 Windows PE 需求。

更佳的維修

舊版的 Windows PE 還缺乏維修支援。若要加入 Service Pack,則必須重建整個 Windows PE。若要加入 Hotfix,則須臨時手動進行 (如果您敢嘗試的話)。事實上,由於 Windows PE 相當小,僅包括有限的 Windows 功能,而且無法長時間執行,因此之前我們並未正視維修問題。不過那是在惡名昭彰的 Blaster 弱點發生之前的情況。由於遠端程序呼叫已加入 Windows PE 中,弱點即可在適合的環境下進行攻擊,而造成 Windows PE 連續重開機。

這也是讓我們決定在 Windows PE 1.5 中加入 Windows 防火牆的原因。而自此之後,我們的團隊就開始確保未來的 Windows PE 版本能夠進行維修,就像完整版的 Windows 一樣。Windows Vista 的其中一個重點區域為改善的維修能力。而 Windows PE 繼承了這項能力。就像其他選用的元件和語言一樣,Windows PE 會使用 peimg.exe 執行更新。更新將透過 Windows 下載中心提供。

自動檔案支援

您可能很熟悉舊版 Windows PE 中用來驅動小型應用程式 factory.exe 的 winbom.ini。不過在新版中,這個檔案已被取代。現在您將使用新的 XML 基礎結構自訂 Windows PE (此 XML 機制與 Windows Vista 中用於自動安裝程式的機制相同),以及名為 wpeinit.exe 的新應用程式。

Wpeinit.exe 會使用 Windows Vista 中的標準 unattend.xml 格式指定 Windows PE 自訂內容及動作。[圖 1] 顯示的範例 unattend.xml 檔案可用來自訂 Windows PE。unattend.xml 檔的格式會記錄為 Windows OEM Preinstallation Kit (OPK) 與 Windows Automated Installation Kit (WAIK) 的一部分;這部分將於稍後討論。

Figure 1 unattend.xml 檔的架構

XML 檔 註解
<ComputerName>MyWinPEMachine</ComputerName>
將 Windows PE 的電腦名稱設定為 MyWindowsPEMachine。
<Restart>Shutdown</Restart>
重新啟動時關閉系統 (並非重新開機,如舊版 Windows PE 的做法)。
<RunSynchronous>
 
<RunSynchronousCommand> <Order>1</Order> <Path>notepad.exe</Path> </RunSynchronousCommand>
執行 notepad.exe。
<RunSynchronousCommand> <Order>2</Order> <Path>cmd.exe</Path> </RunSynchronousCommand>
當 notepad.exe 完成時,cmd.exe 便會執行。
</RunSynchronous>
 
<EnableFirewall>true</EnableFirewall>
開機時啟用 Windows 防火牆。
<PageFile> <Size>1000</Size> <Path>C:\pagefile.sys</Path> </PageFile>
在 C: 磁碟機上建立 1GB 的分頁檔。
<LogPath>C:\mylog.txt</LogPath>
將 wpeinit.exe 的輸出內容以及此指令碼記錄到 C:\mylog.txt 中。

Windows 部署服務

之前提到,我們其中一個主要目標在於,無論安裝程式是從 CD、DVD 或網路啟動,都將一併移轉為統一的基礎結構,藉此改善網路為主的安裝程式。只可惜在執行 RIS 為主的 Windows 安裝時,安裝程式執行的過程中仍有許多額外的工作需要完成。我們希望盡可能摒除複雜而重複的工作,而為了達成此目標,我們建立了 Windows 部署服務。

Windows 部署服務與 RIS 一樣,是 PXE 為主的安裝。但與 RIS 不同的是,該服務是透過網路啟動 Windows PE,並使用相同的映像式安裝程式基礎結構 (如同一般的 CD 或 DVD 安裝程式),同時提供 RIS 始自 Windows 2000 即隨附的相同類型集中式企業安裝基礎結構。有關 WIM 和 Windows 部署服務尚有許多要討論的內容,而本文中並沒有足夠的空間進行討論。不過別擔心,我將在未來的文章中進行更深入的討論,敬請密切期待!

使用 WAIK

至此,您可能想知道如何開始使用 Windows PE 2.0,而您首先需要取得 WAIK。舊版的 Windows PE 會在 Windows OPK 或軟體保證媒體中隨附。由於 Windows PE 2.0 是以提供所有授權的 Windows 客戶使用為目的,因此 Microsoft 已為非 OEM 客戶建立了 WAIK。

WAIK 提供所有需要的 Windows PE 建置工具讓您建立自己的 Windows PE 2.0。目前您可以在 Windows Business Desktop Deployment (BDD) 2007 Beta 版中取得 WAIK。除了 WAIK 之外,BDD 還提供如何使用 WAIK 及其工具的指導。當然,實際熟悉 Windows PE 2.0 以及 Windows Vista 中包括的所有其他新安裝程式與部署技術的最佳方法,就是盡快開始試用。

Windows PE 2.0 新手

Windows PE 2.0 包括 Windows PE 1.6 中的所有功能,並加入了許多新功能和元件,包括:

  • 從 Microsoft Windows Imaging (WIM) 映像內開機
  • 驅動程式插入與即時的隨插即用支援
  • 可寫入的塗銷空間 (即使是從 CD 開機)
  • 輕鬆加入選用元件 - Microsoft 核心可延伸標記語言服務、Windows 修復環境、Microsoft Data Access Components
  • 語言套件
  • 自動檔案支援
  • 建立與更新 Windows PE 的工具已獲得改善

Wes Miller 是 Pluck (www.pluck.com (英文)) 的開發經理,該公司位於美國德州的奧斯丁。Wes 之前任職於同樣位在奧斯丁的 Winternals Software,以及在 Microsoft 擔任 Windows 的程式經理與產品經理。Wes 的連絡方式為:technet@getwired.com

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.