擷取 Windows 映像時維護驅動程式組態

常見的部署案例是從參照電腦擷取單一 Windows 映像,然後將映射套用至具有相同硬體設定的目的地電腦群組。

若要在安裝期間節省時間,並加速終端使用者的 OOBE) 全新體驗 (,您可以指示 Windows 安裝程式維護參照電腦的驅動程式設定作為 Windows 映像的一部分。 只有當參照電腦上的硬體和目的地電腦上的硬體相同時,才應該這麼做。 當您這樣做時,Windows 安裝程式會在映射擷取和部署期間維護驅動程式設定。

指示 Windows 安裝程式維護驅動程式組態

在擷取映射之前,請使用指示 Windows 安裝程式維護驅動程式設定的回應檔案,將電腦一般化。

使用回應檔案維護驅動程式組態

  1. 在技術人員電腦上,開啟 Windows 系統映像管理員 (Windows SIM)。 按一下 [開始],輸入 Windows 系統映射管理員,然後選取 [Windows 系統映射管理員]。

  2. 建立新的回應檔案,或更新現有的回應檔案。 如需詳細資訊,請參閱 建立或開啟回應檔案撰寫回應檔案的最佳做法

  3. 新增 Microsoft-Windows-PnpSysprep/PersistAllDeviceInstalls 設定。 如需詳細資訊,請參閱本主題中的概 一節。

  4. 如果電腦有無法偵測到的硬體,請包含 Microsoft-Windows-PnpSysprep/DoNotCleanUpNonPresentDevices 設定。 For more information, see the Undetectable hardware section in this topic.

  5. 使用回應檔案將電腦一般化。 例如:

    Sysprep /generalize /unattend:C:\unattend.xml
    

概觀

Windows 內建驅動程式套件包含支援各種熱門硬體的設備磁碟機。 如果您的特定硬體需要額外的設備磁碟機才能開機,您可以在 Windows 映像上預先安裝其他設備磁碟機。 獨立硬體廠商 (IHD) 通常會提供這些額外的設備磁碟機與其裝置硬體。 如需如何新增設備磁碟機的詳細資訊,請參閱 在稽核模式中新增驅動程式線上

若要準備要部署到多部電腦的 Windows 映像,您必須使用系統準備 (Sysprep) 工具來將 Windows 映像一般化。 一般化 Windows 映像會移除電腦特定的資訊,並準備設備磁碟機以進行第一次開機。 此準備包括下列步驟:

  • 已移除硬體的裝置狀態。

  • 開機關鍵驅動程式設定會重設為預設值。

  • 刪除裝置記錄檔。

一般化電腦時,請使用具有 Microsoft-Windows-PnpSysPrep\PersistAllDeviceInstalls 設定的回應檔案來節省時間。 此設定可防止 Windows 安裝程式移除和重新設定相同硬體的裝置狀態。 在第一次開機時,偵測到的設備磁碟機已預先設定,可能會啟用更快速的第一次開機體驗。

重要 當參照電腦上的硬體和硬體組態與目的地電腦上的硬體設定不相同時,請避免使用 PersistAllDeviceInstalls 設定。 即使硬體或硬體組態似乎有些微差異,也可能會導致嚴重或容易忽略的問題。 如需詳細資訊,請參閱本主題的 疑難排解硬體設定差異 一節。

最好不要在主要參考映射上使用 PersistAllDeviceInstalls 設定。 相反地,針對具有不同硬體設定的每一組電腦,請先將您的主要參照映射載入具有計劃硬體設定的新參照電腦。 接下來,擷取此設定的新映射,並使用 PersistAllDeviceInstalls 設定。

如需如何一般化 Windows 映像的詳細資訊,請參閱 Sysprep (一般化) Windows 安裝

驅動程式修訂和驅動程式排名的最佳做法

請勿在相同的映射中維護相同驅動程式套件的多個版本或修訂。 使用離線或線上服務工具來更新驅動程式。

一般而言,當 Windows 安裝程式開機電腦且該電腦上存在多個版本的驅動程式套件時,安裝程式會使用驅動程式排名來決定要安裝的驅動程式。 但是,當您使用 PersistAllDeviceInstalls 設定時,不會發生一般驅動程式排名進程。 因此,使用過期驅動程式的裝置可能會持續安裝。 如需驅動程式排名的詳細資訊,請參閱MSDN 上的 Windows 排名驅動程式。

如果您必須將設備磁碟機新增至使用 PersistAllDeviceInstalls 設定的 映射,您可以使用下列其中一種方法來更新設備磁碟機:

針對硬體設定差異進行疑難排解

若要讓 PersistAllDeviceInstalls 設定正常運作,硬體組態在參照電腦和目的地電腦上必須相同。 硬體設定包含下列元件:

  • 硬體製造和型號。

  • 固件。 更新、修訂和設定差異可能會導致某些裝置回報不同的準則,以符合設備磁碟機或使用不同的資源。 例如:

    • 周邊元件互連 (PCI) 型裝置可以在其回報的硬體識別碼中內嵌不同的子系統修訂編號。

    • BIOS 修訂可以變更 [進階設定] 和 [電源介面] (ACPI) 命名空間。 這會導致 Windows 安裝程式以不同的方式報告現有的裝置,或將現有的裝置引進為新裝置。

    • BIOS 系統設定差異可能會導致系統裝置宣告不同的記憶體、I/O、直接記憶體存取 (DMA) ,或中斷 IRQ) 資源 (的要求。

  • 實體位置。 硬體設定必須使用相同的插槽、埠或通訊端號碼來連線到外部裝置。 例如:

    • PCI 擴充卡必須插入相同的插槽號碼。

    • USB 裝置必須連線或有線到相同 USB 主控制器和整合式中樞上的相同埠號碼。

    • 存放裝置必須連線到相同的儲存控制器和通道。

硬體組態中的低風險、中風險和高風險差異

當您使用 PersistAllDeviceInstalls 設定時,任何硬體差異都可能會導致問題。 但有些差異可能比其他差異造成問題。

低風險差異

針對下列硬體差異類型,您可以解決潛在的驅動程式衝突,但仍使用 PersistAllDeviceInstalls 設定:

  • CPU 時脈速度

  • 記憶體數量

  • 硬碟容量

  • 外部輸入裝置,例如鍵盤和滑鼠裝置

  • 監視器

中風險差異

針對下列硬體差異類型,建議您不要使用 PersistAllDeviceInstalls 設定:

  • 視訊卡

  • 存放裝置磁片磁碟機和媒體讀取器,例如光學磁片磁碟機和卡片讀取器

  • 內部或整合式匯流排裝置,例如 USB 或 1394 裝置

當這些類型的硬體差異存在時,即使解決潛在的驅動程式衝突,使用此設定可能無法減少安裝時間。

高風險差異

針對主要硬體差異,請勿使用 PersistAllDeviceInstalls 設定。 這些差異包括:

  • 主機板晶片組或 CPU 品牌

  • 存放控制器

  • 尺寸差異,例如從桌上型電腦變更為膝上型電腦,或從膝上型電腦變更為桌上型電腦

  • 鍵盤配置差異,例如從標準 101 鍵鍵盤變更為日文 106 鍵鍵盤

  • Windows 開機磁片區列舉路徑中的任何其他裝置

硬體組態變更可能發生的問題類型

即使硬體或硬體組態有微微的差異,也可能造成嚴重或容易忽略的問題,如下所示:

  • 系統不穩定

  • 無法使用裝置的某些基本或擴充功能

  • 延長開機時間和延長安裝時間

  • 裝置和印表機資料夾、裝置管理員和其他裝置相關使用者介面中未命名的裝置

  • 讓電腦處於無法開機狀態的嚴重系統問題

可能導致系統開機失敗的硬體設定差異

當參考電腦和目的地電腦上的開機關鍵硬體不相同時,使用 PersistAllDeviceInstalls 設定可能會導致嚴重系統問題,讓電腦處於無法開機的狀態。

開機關鍵驅動程式套件可以屬於下列任何 Windows 裝置安裝類別,如其驅動程式套件中 .inf 檔案的Version > 區段中 ClassGUID 指示 <詞所識別。

系統提供的裝置安裝類別 ClassGUID

系統

{4D36E97D-E325-11CE-BFC1-08002BE10318}

電腦

{4D36E966-E325-11CE-BFC1-08002BE10318}

處理器

{50127DC3-0F36-415E-A6CC-4CB3BE910B65}

Pcmcia

{4D36E977-E325-11CE-BFC1-08002BE10318}

HDC

{4D36E96A-E325-11CE-BFC1-08002BE10318}

SCSIAdapter

{4D36E97B-E325-11CE-BFC1-08002BE10318}

DiskDrive

{4D36E967-E325-11CE-BFC1-08002BE10318}

CDROM

{4D36E965-E325-11CE-BFC1-08002BE10318}

首日封

{4D36E969-E325-11CE-BFC1-08002BE10318}

FloppyDisk

{4D36E980-E325-11CE-BFC1-08002BE10318}

磁碟區

{71A27CDD-812A-11D0-BEC7-08002BE2092F}

USB

{36FC9E60-C465-11CF-8056-444553540000}

SBP2

{D48179BE-EC20-11D1-B6B8-00C04FA372A7}

1394

{6BDD1FC1-810F-11D0-BEC7-08002BE2092F}

Enum1394

{C459DF55-DB08-11D1-B009-00A0C9081FF6}

鍵盤

{4D36E96B-E325-11CE-BFC1-08002BE10318}

滑鼠

{4D36E96F-E325-11CE-BFC1-08002BE10318}

HIDClass

{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}

連接埠

{4D36E978-E325-11CE-BFC1-08002BE10318}

如需這些裝置安裝類別的詳細資訊,請參閱 MSDN 上的 系統提供的裝置安裝類別

無法偵測的硬體

當您將新電腦部署至終端使用者時,某些硬體,例如卸載式裝置或具有開啟/關閉開關的裝置,可能無法在第一次開機期間出現或偵測到。 根據預設,在第一次開機時,Windows 安裝程式會移除未偵測到硬體的預先設定裝置狀態。

若要在第一次開機時部署可能不存在或偵測到的硬體,請將任何適用的設備磁碟機新增至參考映射、連線或開啟適用的裝置,以便 Windows 安裝它們,並在擷取映射時使用 Microsoft-Windows-PnpSysprep/DoNotCleanUpNonPresentDevices 設定。

重要 使用 DoNotCleanUpNonPresentDevices 設定可能會導致不必要的裝置狀態儲存,並導致開機時間變慢。

針對驅動程式衝突進行疑難排解

若要避免獨立開機關鍵驅動程式套件之間的驅動程式衝突,IHV 必須確定每個裝置驅動程式使用不同的服務名稱、登錄機碼值和二進位檔案名。

潛在驅動程式衝突的範例

在下列範例中,名為 Fabrikam 的虛構 IHV 會產生兩種類型的儲存體控制器:StandardController 和 ExtremeController。 Fabrikam 假設特定電腦上一次只會安裝一種類型的儲存體控制器。

驅動程式套件會定義 StandardController 和 ExtremeController 組態,以使用相同的驅動程式服務名稱 storctrl。 storctrl 驅動程式服務會使用不同的服務設定,根據安裝哪些硬體 (StandardController 或 ExtremeController) 而變更。 因為 StandardController 和 ExtremeController 都使用相同的服務,所以它們無法共存。

此範例顯示驅動程式套件檔案 Storctrl.inf 的內容:

[Version]
Signature = "$WINDOWS NT$"
Class = SCSIAdapter
ClassGuid = {4D36E97B-E325-11CE-BFC1-08002BE10318}
...
[Manufacturer]
%Fabrikam% = Fabrikam,NTx86

[Fabrikam.NTx86]
%StandardController% = StandardController_DDInstall,PCI\VEN_ABCD&DEV_0001
%ExtremeController%  = ExtremeController_DDInstall, PCI\VEN_ABCD&DEV_0002

...

[StandardController_DDInstall.Services]
AddService = storctrl,0x00000002,StandardController_ServiceInstall

[StandardController_ServiceInstall]
ServiceType  = 1 ; SERVICE_KERNEL_DRIVER
StartType    = 0 ; SERVICE_BOOT_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ImagePath    = %12%\storctrl.sys
AddReg       = StandardController_ServiceSettings

[StandardController_ServiceSettings]
HKR,Settings,LowPowerMode,0x00010001,1
HKR,Settings,ErrorCorrection,0x00010001,1

...

[ExtremeController_DDInstall.Services]
AddService = storctrl,0x00000002,ExtremeController_ServiceInstall

[ExtremeController_ServiceInstall]
ServiceType  = 1 ; SERVICE_KERNEL_DRIVER
StartType    = 0 ; SERVICE_BOOT_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ImagePath    = %12%\storctrl.sys
AddReg       = ExtremeController_ServiceSettings

[ExtremeController_ServiceSettings]
HKR,Settings,LowPowerMode,0x00010001,0
HKR,Settings,ErrorCorrection,0x00010001,4
...

如果 StandardController 位於參照電腦上,並在映射擷取期間維護其設定,則會預先設定 storctrl 驅動程式服務。 如果 ExtremeController 位於目的地電腦上,Windows 可能會使用適用于 StandardController 的預先設定設定和檔案。 這可能會造成非預期的結果。

IHV 可以使用下列其中一個選項來協助解決衝突:

  • 針對每個組態建立具有個別 .inf 檔案的個別驅動程式套件,並在部署期間只將必要的驅動程式套件匯入 Windows 映像。 例如,將 Storctrl.inf 分割成兩個不同的 .inf 檔案、StandardController 的一個版本,以及一個適用于 ExtremeController 的版本,並且只將必要的驅動程式套件匯入 Windows 映像。
  • 在每個組態的驅動程式套件中建立另一個服務。 為每個服務提供不同的名稱 (例如 storctrl 和 storctrlx) ,並指向不同的二進位影像檔 (,例如,Storctrl.sys和Storctrlx.sys) 。

裝置驅動程式和部署概觀