Windows イメージのキャプチャ時のドライバー構成の保持

一般的な展開シナリオでは、参照コンピューターから 1 つの Windows イメージをキャプチャし、同じハードウェア構成を持つ展開先コンピューターのグループにそのイメージを適用します。

インストール時の時間を節約し、エンド ユーザーの out-of-box experience (OOBE) を高速化するために、参照コンピューターからのドライバー構成を Windows イメージの一部として保持するように Windows セットアップに指示できます。 これは、参照コンピューター上のハードウェアと展開先コンピューター上のハードウェアが同一の場合にのみ行うことができます。 これを行う場合は、イメージのキャプチャと展開中に Windows セットアップによってドライバーの構成が保持されます。

Windows セットアップにドライバー構成の保持を指示する

イメージをキャプチャする前に、Windows セットアップにドライバー構成を保持するように指示する応答ファイルを使用して、コンピューターを一般化します。

応答ファイルを使用してドライバー構成を保持するには

  1. テクニシャンコンピューターで、Windowsシステムイメージマネージャー (Windows SIM) を開きます。 [スタート] をクリックし、「Windows System Image Manager」と入力してから [Windows システム イメージ マネージャー] を選択します。

  2. 新しい応答ファイルを作成するか、既存の応答ファイルを更新します。 詳しくは、「応答ファイルを作成または開く」および「応答ファイルを作成するためのベスト プラクティス」をご覧ください。

  3. Microsoft-Windows-PnpSysprep/PersistAllDeviceInstalls 設定を追加します。 詳細については、このトピックの「概要」セクションをご覧ください。

  4. コンピューターによって検出できないハードウェアがある場合は、Microsoft-Windows-PnpSysprep/DoNotCleanUpNonPresentDevices 設定を含めます。 詳細については、「検出できないハードウェア」のセクションをご覧ください。

  5. 応答ファイルを使用してコンピューターを一般化します。 次に例を示します。

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

概要

Windows のインボックス ドライバー パッケージには、さまざまな一般的なハードウェアをサポートするデバイス ドライバーが含まれています。 特定のハードウェアの起動に追加のデバイス ドライバーが必要な場合は、Windows イメージに追加のデバイス ドライバーをプレインストールできます。 独立系ハードウェア ベンダー (IHV) は多くの場合、これらの追加のデバイス ドライバーをデバイス ハードウェアと共に提供します。 デバイス ドライバーを追加する方法についての詳細は、「監査モードにおいてドライバーをオンラインで追加」をご覧ください。

複数のコンピューターに展開するための Windows イメージを準備するには、システム準備 (Sysprep) ツールを使用して Windows イメージを一般化する必要があります。 Windows イメージを一般化すると、コンピューター固有の情報が削除され、最初の起動のためにデバイス ドライバーを準備します。 こうした準備には次のようなステップが含まれます。

  • ハードウェアのデバイスの状態が削除されます。

  • ブートに不可欠なドライバー設定は既定値にリセットされます。

  • デバイスのログ ファイルが削除されます。

コンピューターを一般化するときには、時間を節約するために Microsoft-Windows-PnpSysPrep\PersistAllDeviceInstalls 設定のある応答ファイルを使用します。 この設定により、Windows セットアップは同じハードウェアのデバイスの状態を削除したり再構成することができなくなります。 検出されたデバイス ドライバーは、初回起動時に既に事前構成済みなので、より迅速な初回起動エクスペリエンスが実現する可能性があります。

重要 参照コンピューターのハードウェアとハードウェア構成が展開先コンピューターのそれと同じではない場合は、PersistAllDeviceInstalls 設定を使用しないでください。 ハードウェアやハードウェア構成のわずかな違いでも、深刻な問題や見落とされがちな問題が発生する可能性があります。 詳細については、このトピックの「ハードウェア構成の違いのトラブルシューティング」のセクションをご覧ください。

プライマリ参照イメージでは PersistAllDeviceInstalls 設定を使用しないことをお勧めします。 代わりに、ハードウェア構成が異なるコンピューターのグループごとに、まず、計画されたハードウェア構成を持つ新しい参照コンピューターにプライマリ参照イメージを読み込んでください。 次に、このセットアップの新しいイメージをキャプチャして PersistAllDeviceInstalls 設定を使用します。

Windows イメージを一般化する方法について詳しくは、「Windows インストールの一般化 (Sysprep)」を参照してください。

ドライバー リビジョンとドライバー ランキングのベスト プラクティス

同じイメージ内に、同じドライバー パッケージの複数のバージョンやリビジョンを保持しないでください。 オフラインまたはオンラインのサービス ツールを使用してドライバーを更新します。

通常、Windows セットアップがコンピューターを起動し、そのコンピューターに複数のバージョンのドライバー パッケージが存在する場合、セットアップではドライバー ランキングを使用して、インストールするドライバーを決定します。 しかし PersistAllDeviceInstalls 設定を使用する場合は、通常のドライバー ランキング プロセスが発生しません。 そのため、古いドライバーを使用するデバイスはインストールされたままである可能性があります。 ドライバー ランキングの詳細については、MSDN の「Windows のドライバーのランキング方法」をご覧ください。

PersistAllDeviceInstalls 設定を使用するイメージにデバイス ドライバーを追加する必要がある場合は、次のいずれかの方法でデバイス ドライバーを更新できます。

ハードウェア構成の違いのトラブルシューティング

PersistAllDeviceInstalls 設定が正しく機能するためには、参照コンピューターと展開先コンピューターのハードウェア構成が同じである必要があります。 ハードウェア構成には、次のコンポーネントが含まれます。

  • ハードウェアのメーカーおよびモデル。

  • ファームウェア。 更新、リビジョン、および構成の違いにより、一部のデバイスでは、デバイス ドライバーの照合に関して異なる条件が報告されたり、異なるリソースが使用されたりする場合があります。 次に例を示します。

    • 周辺機器相互接続 (PCI) ベースのデバイスでは、報告されたハードウェアIdに異なるサブシステムのリビジョン番号を埋め込むことができます。

    • BIOS リビジョンによって、Advanced Configuration and Power Interface (ACPI) 名前空間が変更される可能性があります。 これにより、Windows セットアップが既存のデバイスについて別の報告をしたり、既存のデバイスを新しいデバイスとして表示したりします。

    • BIOS システム構成の違いにより、システム デバイスによって異なるメモリ、I/O、ダイレクト メモリ アクセス (DMA)、または割り込み要求 (IRQ) リソースが要求される可能性があります。

  • 物理的な場所。 ハードウェア構成では、外部デバイスに接続するために、同じスロット、ポート、またはソケット番号を使用する必要があります。 次に例を示します。

    • PCI 拡張カードは、同じスロット番号に挿入する必要があります。

    • USB デバイスは、同じ USB ホスト コントローラーと統合ハブ上の同じポート番号に接続する必要があります。

    • ストレージ デバイスは、同じストレージ コントローラーとチャネルに接続する必要があります。

ハードウェア構成の低リスク、中リスク、高リスクの違い

PersistAllDeviceInstalls 設定を使用するときには、どのようなハードウェアの違いでも問題が発生する可能性があります。 ただし、一部の違いは、他の違いよりも問題を引き起こす可能性が高くなります。

低リスクの違い

次の種類のハードウェアの違いの場合、ドライバー競合に対処して、PersistAllDeviceInstalls 設定を引き続き使用できる場合があります。

  • CPU のクロック速度

  • メモリの容量

  • ハード ディスクの容量

  • キーボードやマウス デバイスなど、外部入力デバイス

  • モニター

中リスクの違い

次の種類のハードウェアの違いの場合は、PersistAllDeviceInstalls 設定を使用しないことを推奨します。

  • ビデオ カード

  • ストレージ ドライブやメディア リーダー (光学式ドライブやカード リーダーなど)

  • 内部バスまたは統合バス デバイス (USB や 1394 デバイスなど)

これらの種類のハードウェアの違いが存在する場合、ドライバーの競合に対処できても、この設定を使用してインストール時間が短縮されない可能性があります。

高リスクの違い

ハードウェアに大きな違いがある場合は、PersistAllDeviceInstalls 設定を使用しないでください。 こうした違いには、次のようなものがあります。

  • マザーボード チップセットまたは CPU ブランド

  • 記憶域コントローラー

  • フォームファクターの違い (デスクトップからノート PC、またはノート PC からデスクトップへの変更など)

  • 標準の 101 キー キーボードから日本語 106 キー キーボードへの変更など、キーボード レイアウトの違い

  • Windows ブート ボリュームの列挙パスにその他のデバイスがある場合

ハードウェアの構成変更が発生する可能性のある問題の種類

ハードウェアやハードウェア構成のわずかな違いでも、深刻な問題や見落とされがちな問題が発生する可能性があります。たとえば次のような問題があります。

  • システムが不安定

  • デバイスの基本または拡張機能の一部を使用することができない

  • ブート時間およびインストール時間が長くかかる

  • [デバイスとプリンター] フォルダー、デバイス マネージャー、その他のデバイス関連のユーザー インターフェイス内のデバイス名が誤って表示される

  • 重大なシステムの問題によりコンピューターが起動不可能な状態のままになる

システム起動失敗の原因となるハードウェア構成の違い

起動に不可欠なハードウェアが参照コンピューターと展開先コンピューターとで同じではない場合、PersistAllDeviceInstalls 設定を使用するとコンピューターが起動不可能な状態のままになる重大なシステム問題が発生することがあります。

起動に不可欠なドライバー パッケージは、ドライバー パッケージ内の .inf ファイルの <Version> セクションにある ClassGUID ディレクティブによって識別される、次の Windows デバイス セットアップ クラスのいずれかに所属します。

システム定義のデバイス セットアップ クラス ClassGUID

System

{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}

FDC

{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}

Port

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

これらのデバイス セットアップ クラスについて詳しくは、MSDN の「システム定義のデバイス セットアップ クラス」をご覧ください。

検出できないハードウェア

新しいコンピューターをエンドユーザーに展開する場合、リムーバブル デバイスや、オン/オフスイッチが設定されているデバイスなど、一部のハードウェアは、最初の起動時に存在しないか、検出されない可能性があります。 既定では、初回起動時に Windows セットアップによって、検出されないハードウェアの事前構成されたデバイスの状態が削除されます。

最初の起動時に存在しないまたは検出されないハードウェアを展開するには、該当するデバイス ドライバーを参照イメージに追加し、該当するアプリケーションを接続またはオンにして、Windows がそれらをインストールできるようにします。また、イメージをキャプチャするときに Microsoft-Windows-PnpSysprep または DoNotCleanUpNonPresentDevices 設定を使用します。

重要 DoNotCleanUpNonPresentDevices 設定を使用すると、余分のデバイス状態を不要に保存する可能性があり、起動時間が長くなる原因となります。

ドライバー競合のトラブルシューティング

独立した起動に不可欠なドライバー パッケージ間のドライバーの競合を回避するには、IHV で各デバイス ドライバーに異なるサービス名、レジストリ キーの値、およびバイナリ ファイル名が使用されていることを確認する必要があります。

潜在的なドライバー競合の例

次の例では、Fabrikam という名前の架空の IHV が、2 種類のストレージコントローラー (StandardController と ExtremeController) を生成します。 Fabrikam は、特定のコンピューターに一度にインストールされる記憶域コントローラーの種類が 1 つだけであることを前提としています。

ドライバー パッケージは、同じドライバー サービス名 storctrl を使用するように StandardController と ExtremeController の構成を定義します。 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 を 2 つの別々の .inf ファイルに分割し、1 つは StandardController 用、もう 1 つを ExtremeController 用にして、必要なドライバー パッケージのみを Windows イメージにインポートします。
  • それぞれの構成用に、ドライバー パッケージに別のサービスを作成します。 それぞれのサービスに異なる名前を付け (storctrl と storctrlx など)、異なるバイナリ イメージ ファイル (Storctrl.sys と Storctrlx.sys など) をポイントします。

デバイス ドライバーと展開の概要