桌面檔案從網路啟動 Windows

Wes Miller

目錄

PXE 的運作方式
探討 RIS
WDS — 開場
其他玩家
總結

接下來的幾個月,我打算研究 Windows 部署服務 (WDS),這項功能可從 Windows Server 2003 使用,而且是內建在 Windows Server 2008 中。WDS 在您的部署基礎結構中可能是非常重要的元件,因此我必須讓您藉著這次討論,打下良好的基礎。這一篇 (也是第一篇)

專欄將講解開機前執行環境 (PXE;讀為 pixie) 的架構、遠端安裝服務 (RIS) 的歷程,以及 Microsoft 所用的其他 PXE 相關技術。

我在 2001 年轉到 Windows 核心 OS 小組時,RIS 是我接手的其中一項技術 (由於它的複雜性,以及它對 BIOS 實作和硬體的依存性,讓當時接手的我顯得有些戰戰兢兢)。但它卻是除了 Windows® PE 之外,在我擔任程式經理任內最玩味的一項技術。

我還記得第一次安裝 Windows 3.0 時,是用一組 3.5" 磁片安裝的。時隔多年,現在安裝作業因為有了可開機光碟 (有些 Windows 98 版本有含),已經方便許多。但是,安裝作業始終都需要借助某種類型的本機媒體以及本機硬碟。

這幾年,從網路啟動 Windows 的功能 (亦即,完全透過網路開機,無需經由硬碟) 已經成為客戶常見的要求了。雖然有些舊版 Windows 具備這項功能,但是 Windows NT® 卻從未有過。由於現版的 Windows Server® 2003 和 Windows Server 2008 可以透過 iSCSI 啟動器開機,程序與以往大相逕庭,因為它並非真正的本機,而是必須持續仰賴遠端磁碟機作為開機磁碟機。

預備用戶端

從 Windows 2000 以來,Microsoft 便開始開發這項容許進行網路安裝、後來稱為 RIS 的技術。RIS 的目標相當簡單 — 就是使用 PXE,將作業系統映像置於目標電腦的本機磁碟上。

PXE 的運作方式

[圖 1] 所顯示的是 PXE 開機順序。PXE 是一個相當簡單的通訊協定,由 Intel 及其他廠商開發,屬於主動線上管理方案 (Wired for Management initiative) 的一部分。PXE 是衍生自動態主機設定通訊協定 (DHCP),它本身則是衍生自 BootP,而且通常都在您的網路介面卡 (NIC) 中實作。簡單說,其步驟如下:

fig01.gif

[圖 1] PXE 開機順序 (按一下以放大影像)

第 1 步系統 BIOS 開機,並且決定開機順序。

第 2 步如果開機順序把 PXE 排在硬碟,或快閃磁碟機或光碟機前面,或者如果沒有那些裝置的話,萬用網路驅動程式介面 (Universal Network Driver Interface,UNDI) 就會從 NIC 載入。NIC 主要包含一個極微小的網路裝置驅動程式以及一個簡單式檔案傳輸通訊協定 (TFTP) 實作 (有的 BIOS 實作要求使用者按 F12 鍵才讓他進行 PXE 開機。但這並非標準作法,我個人主張停用它)。

第 3 步系統開始發出簡單的使用者資料包通訊協定 (UDP) 廣播,尋找 DHCP 伺服器。其實這才是 PXE 開機順序的第一步,稱為「探索」。請注意,該通訊協定是 UDP — 也就是說,如果您沒有 UDP,就得在路由器和交換機花點時間,以確保 PXE 通訊能夠全部過關。

第 4 步如果 DHCP 伺服器聽到廣播,它會回應一個 IP 位址。這個步驟稱為「提供」。此處必須注意的一點是,PXE 是無狀態的,而用戶端在此處必須提供的系統專屬狀態資訊量相當有限 (MAC 位址,如果可用的話,再加上系統管理 BIOS GUID,後者又稱為 SMBIOS GUID)。

第 5 步用戶端在接收封包和 IP 位址之後,接著會表明它其實還需要進一步的資訊 — 那就是 PXE 伺服器的位址。這時候會再發出另一個廣播,其中包含原先回應的 DHCP 伺服器所傳來的資訊。用戶端的用意是要告訴 DHCP 伺服器:「我還需要更多資訊 — 尤其是網路開機程式 (NBP) 的位置」。這個步驟稱為「要求」。

第 6 步PXE 伺服器以 PXE 伺服器的位址以及 NBP 的位置作為回應,那是一個極微小的開機執行檔,必須小於 32KB。這個步驟稱為「通知」。如果您有跟著一起試著做,也許已經注意到 DORA 這個縮寫字了 — Discover (探索)、Offer (提供)、Request (要求)、Acknowledge (通知),這倒是記住順序的好方法。

請注意,如果您已經安裝 Microsoft DHCP 和 WDS (或者使用其他廠商的技術),就不會進行要求步驟,事實上 DHCP 伺服器所傳來的原始「提供」封包,已經包含 PXE 伺服器和 NBP 程式的位置了 (因此省了兩個步驟,也省了一些時間)。

第 7 步具有先前提及的小型 TFTP 通訊協定堆疊的用戶端,從 PXE 伺服器所指定的網路位置下載 NBP。TFTP 是一個老舊的超小型無狀態通訊協定。選擇它並不是為了效能或安全性 — 因此許多路由器系統管理員預設都會停用它。如果您希望 PXE 能夠運作,就必須啟用它。

許多 PXE 實作 (包括 RIS 在內) 都具有在此處要求使用者按 F12 鍵才能繼續進行的功能,但是 PXE 伺服器的系統管理員通常都能夠停用這項功能。下個月當我再進一步探討 WDS 時,我會討論 Microsoft 為了提升 Windows Server 2008 效能,在 WDS 的 TFTPD (TFTP 精靈) 當中新增的一些加強功能。

第 8 步將 NBP 初始化。以 RIS 這個案例來說,這個動作會啟動 Windows 開機載入器,開始進行部署程序。PXE (至少實際的開機層級通訊協定) 不再是程序中的一個元件。

您必須記住,PXE (無論是 RIS、WDS 或其他任何基礎結構) 透過慢速連結 (它可以傳輸相當大量的資料) 或者像衛星這樣的高延遲連結 (通訊就是無法正常運作,甚至無法存活) 的效率並不是很好。

您也許會注意到在 PXE 開機程序中,當用戶端傳送要求時,畫面並未特別詢問:「您是我媽媽嗎?」。事實上畫面根本不會出現太多敘述資訊知會 PXE 伺服器。通常會出現的是競爭狀況 — 而獲勝的是第一個回應您用戶端要求的伺服器。您可以執行幾個動作來減輕這個問題:

  • 調整其中一部 PXE 伺服器或另一部伺服器的回應速度。網路延遲和伺服器馬力會影響伺服器的回應速度。事實上,過去 Microsoft IT 所用的伺服器都相當厲害,即使 PXE 伺服器就在您辦公室內,公司伺服器有時候還是會贏過它。這時候,您只要針對預備用戶端,將本機 PXE 伺服器設定為完全沒有逾時值就行了。
  • 預備用戶端。如果您希望 PXE 伺服器先於其他公司 IT 伺服器之前回應,就不能漏掉這一步。您可以預備用戶端,讓 Active Directory® 告訴 WDS 或 RIS,沒錯,其實「我就是你媽媽」。請注意,在 Active Directory 的系統中,使用 SMBIOS GUID 是遠優於專屬識別碼,但如果 SMBIOS GUID 並不是在這些系統中實作 (很可能是在相當老舊的硬體中實作),您就可以 (也必須) 使用以 MAC 位址為基礎的 GUID。如需詳細資訊,請參閱「預備用戶端」資訊看板。
  • 別讓 PXE 通訊穿越交換器或路由器;請在每一端分別安置一部 PXE 伺服器。這個做法的缺點是,實作與維護的費用都相當昂貴 (每一部伺服器都必須維護它自己的映像)。

RIS (現在是 WDS) 伺服器與 Microsoft DHCP 伺服器一樣,必須對它們所關聯的 Active Directory 實作進行驗證。其目標是讓 Active Directory 知道所有的伺服器,以減少惡意 PXE 伺服器可能造成的問題 (例如,PXE 廣播風暴)。

請注意,此舉只能保護 Active Directory 所知的伺服器。如果您設定的是自己的網域,或是設定非 Microsoft PXE 伺服器,那就另當別論了。

過去 Microsoft 曾經有一位熱心過頭的員工,設定了一部「零接觸」(zero-touch) 部署非 RIS PXE 伺服器。進行這項實作必須完全清除硬碟,並且放置一個全新的映像。如果部署是在隔離 (與網路切斷連線) 的實驗室裡進行,那就什麼事都不會發生,很不巧的它並不是 — 所以它就這樣把一位將 PXE 開機順序排在硬碟之前的 Microsoft 主管的磁碟一舉清除殆盡了。

其實原本它還不至於會導致什麼大問題,因為 Microsoft IT 都必須按 F12 才能進行 PXE 開機,但偏偏這一部 PXE 伺服器剛好就是沒有延遲、沒有 F12 提示,也沒有任何類型的通知。也就是說,那位主管的電腦,還有其中由漫遊使用者設定檔所保護的所有資料,就這樣很有效率的全部消失了。

這個教訓告訴您,如果您要使用「零接觸」,千萬要隔離您的 PXE 伺服器,否則至少也必須要求按 F12 才行。

探討 RIS

在 Windows 2000 推出之後,我承接了 RIS。只要是攸關 RIS,Windows 2000 就像跟時間賽跑一樣 — 而測試、效能以及其他限制都讓 RIS for Windows Server 2000 只能用於 Windows 2000 Professional 部署。沒辦法,伺服器產品就是無法透過 RIS 加以部署。Windows 2000 只能用於 x86 的機器,也因此正好成為絕佳的 RIS 測試台,因為它一個架構只有一個產品。過去 RIS 不但與 (而且必須與) Active Directory 完全整合,也能夠妥善整合到 Microsoft DHCP 伺服器,並且還包含它自己的 TFTPD。

現在 RIS 則使用 NBP 繼續下載 TFTP — 並且帶下足夠的 Windows 核心,開始進行安裝程序 (在某特定點,一旦 Windows 與伺服器的連線從 TFTPD 切換到伺服器訊息區 (或 SMB),常值程式碼路徑就與傳統磁片起始的 Windows 2000 或 Windows XP 安裝實際共用了)。待原生模式 Windows 起始之後,Windows 安裝便開始啟動「RIS OS 選擇器 (OSC) 精靈」。

OSC 螢幕有點像可以設定的 HTML 2.0 頁面。它們受到嚴格限制,不能包含影像或其他類似項目,事實上,它們根本不能包含非 ANSI 字元,因此使得特定的 Windows 地區設定部署起來相當複雜。

RIS 的最終產品就是 RIS 伺服器上的 txtsetup.sif 檔。當 OSChooser 精靈完成時,用戶端便「由軟體重新開機」,但是 RIS 伺服器 txtset­up.sif 檔的位置,會在軟體重新開機之後保留並重新載入。這個 txtsetup.sif 檔與 unattend.txt 檔沒什麼兩樣,只是多了幾個欄位,幫助 RIS 完成安裝程序。

RIS 也可以執行類似傳統自動安裝的安裝作業 (RISetup),另外它還有類似 Sysprep (RIPrep) 的複製基礎結構,並且還與它共用程式碼。但是 RIPrep 也可以將自己的映像上傳到 RIS 伺服器。

不過,RIS 卻有一些眾所周知的基本限制。第一,它缺乏伺服器部署的支援。有些結合 IT 複雜性的入侵程式 (例如 Code Red 和 Sasser) 曾讓許多重要客戶直接從 2001 年 9 月 11 日的悲劇復原,這些入侵程式引導我們實際快速追蹤現有 Windows 2000 RIS 伺服器的解決方案,以便進行 Windows Server 部署。雖然我們曾經為了 Windows Server 2003 研究它,但是它並未正式發行。

PXE 相關技術的其他資訊

第二,RIS 缺乏將 OSChooser 精靈自動化的能力,這項功能後來是以 Windows Server 2003 中的 <META ACTION="AUTOENTER"> 元素加以啟用。最後一點,OSChooser 無法妥善用於非 ANSI 字元 — 這是許多美國以外的客戶指出的重要弱點。

舉個例說,如果您用的是法文鍵盤,就無法完成 RIS 安裝。要在全球各地的電腦上,讓非 ANSI 字元在 BIOS 層級正常運作是相當複雜的任務,很難辦到。

自 Windows Server 2003 推出之後,我們開始正式支援 Intel Itanium 架構,以及所有 Windows 2000 和 Windows Server 2003 的各種伺服器。 Windows Server 2003 甚至還支援 x64 架構。

為了提升效能,RIS 也大幅重新改寫 TFTPD。Windows Server 2003 支援同時開機多達 75 個用戶端;記住,只要 SMB 管道一填滿流向用戶端的網路流量時,就到達上限了。

WDS — 開場

在著手開發 RIS for "Longhorn" (就是 Windows Server 2008 的產品代碼) 之後,我們發現還是需要倒退一步。之前我曾在專欄中提過,我們已經下了大盤賭注,從 Windows PE 進行映像式 (WIM) 安裝。因此 WDS 的主要宗旨,是從 PXE 開機的 Windows PE 執行個體進行映像式部署。

另外,我們也知道 Windows Server 2003 是 Windows Vista® 部署的常用平台,而且舊版的 WDS 需要採用「遠端」(Out of Band) 解決方案。因此,WDS 可以在 Windows Server 2003 SP1 執行,而且內建在 Windows Server 2003 SP2 中。

由於它可以當作 RIS 伺服器 (傳統模式)、混合伺服器 (混合模式) 或 WDS 專用伺服器 (原生模式) 使用,因此 WDS 可讓您移轉到正式的 WDS 式部署,一如它之前所保證。我聽過客戶問起,是否可以將 RIS 安裝在 Windows Server 2003 SP2 系統上。沒錯,的確可以 — 您可以安裝 WDS,以傳統模式執行。[圖 2] 顯示的是支援的作業系統。

[圖 2] 支援的部署用平台

作業系統 RIS (Windows 2000) RIS (Windows Server 2003)** WDS (Windows Server 2003)**** WDS (Windows Server 2008)
Windows 2000 Pro X X X X
Windows 2000 Server * X X X
Windows XP Pro   X (x86 和 IA64)*** X X
Windows Server 2003   X (x86 和 IA64)*** X X
Windows Vista     X X
Windows Server 2008     X X
* support.microsoft.com/kb/308508support.microsoft.com/kb/313069 已經透過 RIS 新增 Windows 2000 Server 的支援。
** WDS 傳統模式和混合模式同樣支援這個矩陣進行傳統安裝。
*** Windows Server 2003 SP1 已經增加 x64 系統的支援。IA64 系統過去只支援 RISetup 安裝。
**** 原生模式支援。

Windows Server 2003 SP1 和 SP2 中的 WDS 已開始移轉到 WDS。就像我之前提過,WDS 在 Windows Server 2008 中所增加的主要功能,是一個經過修訂的 TFTPD、可延伸韌體介面 (EFI) 開機支援,當然啦,還有多點傳送部署。

其他玩家

自動化部署服務 (ADS) 是由 Microsoft 的另一個小組所建構,主要目標是快速伺服器佈建。ADS 具備正式的磁區映像處理、自己的開機代理程式 (小於 Windows PE,但功能不如它完整)、自己的 TFTPD,以及相當進階的多點傳送。內建在 ADS 的功能,雖然沒有百分之百功能同位檢查,但是在 System Center Configuration Manager (SCCM) 當中已經差不多夠用。

Windows XP Embedded 則是透過自己的 TFTPD,進行完全 PXE 開機到 RAMDisk,但卻無法以這個方式進行遠端部署。這項技術是為了透過 PXE,同時從同一個磁碟映像開機眾多的系統而設計。

總結

簡單說,這就是它的歷史。如需詳細資訊,請參閱「PXE 相關技術的其他資訊」資訊看板。下個月我將探討 WDS 的基礎,接著是有關 WDS 進階功能 (多點傳送及其他資訊) 的專欄,最後是在不使用 WDS 的情況下使用 WDS,這個意思是超越現有的 WDS/安裝體驗,伸展您自己的部署技術。

Wes Miller 在位於德州奧斯汀的 CoreTrace (www.CoreTrace.com) 擔任資深技術產品經理。他之前任職於 Winternals Software,並且曾在 Microsoft 擔任專案經理一職。您可以透過電子郵件與 Wes 聯絡:technet@getwired.com

© 2008 Microsoft Corporation and CMP Media, LLC.著作權所有,並保留一切權利。未經許可,不得部分或全部重製。