他のドライバーの挿入方法と組み合わせて使用する場合の$WinPeDriver$ の制限事項
この記事では、ドライバーを WinPE とインストールするオペレーティング システムにドライバーを含める方法について説明します。これにより、ドライバーはインストールの WinPE 部分で使用でき、完成したオペレーティング システムのインストールにも使用できるようになります。
適用対象: Windows 7 Service Pack 1、Windows Server 2012 R2、Windows Server 2008 R2 Service Pack 1
元の KB 番号: 2686316
まとめ
インストール メディアにドライバーを追加するときは、バージョンを混在しないでください。 メディア全体で各ドライバーの同じバージョンを使用します。
既定のドライバーを Winpe (boot.wim) とターゲット インストール オペレーティング システム (install.wim) に含める方法はいくつかあります。 ドライバーのバージョンが一致しない場合は、PNP ランク付け規則に関係なく、メモリに読み込まれた最初のドライバーが使用されます。 その他のバージョンは、後で PNP によってこれらのドライバーが選択されるのを防ぐ 'Bad' ドライバーとしてマークされる場合があります。 これには、インストールの WinPE (Winpe フェーズ) の起動時にメモリに読み込まれたドライバーが含まれます。 たとえば、DISM.exe経由で boot.wim にドライバーを挿入したり、Drvload.exeを使用してドライバーを読み込んでドライバーを手動で読み込んだりできます。
パーパス
次のシナリオを考えてみましょう。ディスクを操作するSetup.exeを実行する前に、既定のストレージ コントローラー ドライバーを必要とする Windows オペレーティング システムをインストールする目的で、カスタム Windows プレインストール環境 (WinPE) イメージを作成します。 さらに、セットアップの \$WinPEDriver$ フォルダー機能を使用して、同じドライバーの新しいバージョンを含めるために、"最新の" ドライバーを提供する必要があります。
$WinPEDriver$ 機能は、インストール時にドライバーを提供する方法として意図されています。 ただし、これはSetup.exeの機能であり、Setup.exe起動するまで呼び出されません。 DISM を使用して WinPE boot.wim ドライバー ストアに手動で挿入された現在のデバイスのドライバーは、起動時にメモリに読み込まれます。 これら 2 つのメカニズムは独立しており、それらを一緒に使用する場合には注意が必要です。
WinPE には、メモリに読み込まれたドライバーをアンロードする組み込みメカニズムがないため、既に読み込まれているデバイスのドライバーは、既に読み込まれているデバイスのドライバーが既に存在するため、setup.exeの起動時には再読み込みされません。 このエラーにより、WinPE に挿入されたドライバーバージョンよりも新しく、それ以外の場合はそれを上回る場合でも、セットアップは$WinPEDriver$ フォルダー内のドライバーを無効なドライバーとしてマークします。 セットアップには、boot.wim に読み込まれたドライバーに関する明示的な知識がありません。
この動作は仕様上です。ただし、この記事では、展開可能なオペレーティング システムにこれらのドライバーを含めることができるように、このシナリオに対応する方法を特定します。
詳細
上記のシナリオでは、起動可能な USB フラッシュ デバイス (UFD) ハード ドライブまたはサム スティックに WinPE を配置することが最も望ましいでしょう。
このドキュメントでは、ドライバーを挿入してウィンドウを起動する方法について説明します。 次のグラフは、ドライバーを含める方法と結果を簡単に示しています。
WinPE (インボックス ネイティブまたは挿入) | ($WinPEDriver$ のアウトボックス ドライバー) | 結果 (POST OS) |
---|---|---|
WinPE に、Dism.exe経由で挿入されたドライバー バージョン X1 が含まれている場合 | 同じドライバー名を持つドライバーの X2 バージョンが含まれています | X1 は OS インストール後に実行され、X2 は無視されます |
WinPE が $WinPEDriver$ のDrvload.exeを使用してドライバー X2 をインストールする場合 | 同じドライバー名を持つドライバーの X2 バージョンが含まれています | X2 は OS インストール後に実行されます |
WinPE にブート クリティカルではないドライバー X1 が含まれている場合 (インボックス ネイティブ) | ドライバーが含まれています | インボックス ネイティブ ドライバー X1 を使用します。 OS のインストール後に、そのデバイスに対してすぐに使用できるドライバーはありません |
ドライバーの制限事項
インストールの WinPE 部分中に機能しない可能性がある、含めたり読み込んだりできるドライバーがあることに注意してください。 これには以下が含まれますが、制限はありません。ビデオ ドライバー、ワイヤレス アダプター ドライバー、オーディオ ドライバー。 このドキュメントで説明する動作は、BootCritical ドライバー (ハード ドライブにアクセスするためのコントローラー ドライバーなど、ブート時に必要なドライバー) に固有のものではなく、インストール/展開中に読み込まれるすべてのドライバーに対して有効です。
StartNet.cmdからドライバーを読み込む手順
これは、Windows プレインストール環境 (WinPE) に同じドライバーを含める方法と、インストールしているオペレーティング システムで使用できるようにする方法の 1 つです。その他の方法については、このドキュメントの詳細を参照してください。
技術者のマシンを設定します。
- サポートされている技術者マシンに OPK/AIK をインストールします。
- 変更する Windows ビットをローカル HDD c:\bin にコピーします。
- メディアに含めるドライバーを検索/ダウンロード/抽出します。
Web ページごとに USB デバイスを準備するには、必ずデバイスに "INSTALL_WIN7" という名前を付けます。 この名前は後で使用されます。これを変更する場合は、手順 6 で説明するサンプル スクリプトと以下の例で名前を変更する必要があります (Web ページのリンクはドキュメントの最後に表示されます)。
USB デバイスへのコピー用の WinPE ファイルを作成し、管理コマンド プロンプトを開き、次を実行します。
Copype.cmd <arch> <path>
Copy <pathto> winpe.wim to \ISO\sources\boot.wim
boot.wim をマウントします。
Dism /get-wiminfo /wimfile:\<pathto>\boot.wim
Dism /mount-wim /wimfile:<pathto>\boot.wim /index:1 /mountdir:<pathto>\Mount
管理コマンド プロンプトを開き、\mount\windows\system32\startnet.cmd (Notepad.exe などを使用して) 編集します。
次のサンプル スクリプトでは、USB デバイスを識別し、Drvload.exeを使用して WinPE 中にドライバーを使用できるようにします。 開いたstartnet.cmd ファイルにスクリプトを切り取って貼り付けます。
Note
最初にスクリプトをnotepad.exeまたはその他のテキスト エディターにコピーして、書式設定を削除することができます。
wpeinit :ChkVar :: Locating USB Device IF NOT DEFINED usbdrv ( ECHO list vol | diskpart | find "INSTALL_WIN7" > pt.txt FOR /F "tokens=3" %%a IN (pt.txt) DO ( SET usbdrv=%%a^: ) del pt.txt /f /q IF EXIST %usbdrv%\InstallOS.bat call InstallOS.bat
StartNet.cmd保存して閉じます。
次のコマンドを使用して、boot.wim の変更をマウント解除してコミットします。
Dism /unmount-wim /mountdir:<pathto>mount /commit
\ISO フォルダー内のすべてのファイルを USB フラッシュ デバイスにコピーします (FAT32 形式でアクティブとしてマークする必要があります)。
USB フラッシュ デバイスのルートに $WinpeDriver$ という名前のフォルダーを作成します。
ドライバーをこのフォルダーにコピーします (例: <USB_drv>\$WinpeDriver$\DriverX)。
管理コマンド プロンプトを開き、ファイル <USB_drv>\InstallOS.batを作成し、次の行を切り取ってバッチ ファイルに貼り付ける。
drvload %usbdrv%\$winpedriver$\<device>\filename。INFDVD から Windows OS インストール ソース ファイルを含めるには:
- USB サムスティックに次のフォルダーを作成します: <USB_drv>\<OS>\Sources (例: e:\Win2008r2x64\Sources)。
- DVD\sources\* を選択して <USB_drv>\<OS>\sources にコピーします (boot.wim を除外できます)
- WinPE の起動時にsetup.exeを手動で起動するには、 <USB_drv>\<OS>\Sources\Setup.exe を選択し、必要に応じて適切なスイッチを追加します。
- 完全に自動化されたデプロイの場合は、InstallOS.bat ファイルに次の行を追加し、適切なスイッチを追加します。
%usbdrv%\<OS>\Sources\Setup.exe
TEST マシン上の USB デバイスを起動してテストする
WinPE でドライバーを使用できるようにする方法
WinPE にドライバーを含める方法は次のとおりです。
DISM.exeを使用したイメージ ビルド時間の挿入 - WinPE イメージの Driverstore にドライバーを配置し、WinPE ブート時にプラグ アンド プレイを介して選択されます。 インストールされている OS には反映されません。 このメソッドでは、アクセス用に WIM ファイルをマウントし、ドライバーを挿入し、WIM への変更を保存してコミットする必要があります。
WIM の情報の収集、マウント、挿入、マウント解除の手順:
DISM /get-wiminfo /wimfile:<pathto>boot.wim
DISM /mount-wim /wimfile:<pathto>boot.wim /index:n /mountdir:<pathto>mount
DISM /add-driver /image:<pathto>mount / driverpath:<pathto>driverINF
[必要に応じて逆に/remove-driver
]DISM /unmount-wim /commit /mountdir:<pathto>mount
Drvload.exeを介したランタイム ドライバーの読み込み - ドライバーをメモリに読み込み、デバイスを起動します。 インストールされている OS にドライバーを伝達しません。
Devcon.exeによるランタイム ドライバーの読み込み - Devcon は、Windows Device Driver Kit (DDK)/Windows Driver Kit (WDK) のサンプル ソース コードを使用して提供されます。 独自のコピーを作成してコンパイルする必要があります。 Devcon は、ドライバーのメモリへの読み込み、デバイスの起動など、ドライバーを操作するために使用されます。 インストールされている OS にドライバーを伝達しません。 ([参照] セクションのリンク)
$WinPEDriver$ フォルダー- Setup.exeは、$WinPEDriver$ ディレクトリ内のすべてのドライバーをメモリに読み込もうとし、インストールする OS への挿入のスケジュールも設定します。
DriverPath を含むランタイム応答ファイル (unattend.xml) - パス (および必要に応じて資格情報) をunattend.xmlで指定する必要があります。 これは、ネットワーク共有またはローカル上にある中央リポジトリ内のファイルにアクセスするために使用されます。 セットアップでは、unattend.xmlで提供されているドライバー ストア内のすべてのドライバーの読み込みが試みられ、インストールされている OS への挿入のスケジュールも設定されます。
Windows のインストールを起動する
WinPE からオペレーティング システムのインストールを起動するには、次のようないくつかの方法があります。
- boot.wim にセットアップ パッケージを挿入する。
- カスタム WinPE は、Windows Setup.exeを自動的に起動するように変更できます。
- 言語パックとスクリプトのサポートにも使用できます。
- startnet.cmdまたはwinpeshl.iniからsetup.exeを起動します。
- USB スティック/Hdd を見つける
- \path\setup.exe </switches を起動する>
- cmd.exeを置き換えるカスタム フロントエンド (参照セクションの Windows RE のリンクを参照)。
- 通常の Windows セットアップ メディアから起動します。このメディアは、最初に WinPE (Boot.wim) まで起動し、接続されている USB デバイスまたはネットワーク ストレージから入力を受け取ることができます。 このメソッドについては、この記事では説明しません。
Windows にドライバーを追加する方法
次に、インストールからすぐに使用できるドライバーの追加に進むのに従って、Windows にアウトオブボックス ドライバーを含めるために使用できるいくつかの方法があります。
- Dism.exe
Dism /get-wiminfo /wimfile:<pathto>Install.wim
Dism /mount-wim /wimfile:<pathto>Install.wim /index:n /mountdir:<pathto>mount
Dism /add-driver [and conversely /remove-driver] /image:<pathto>mount /driverpath:<pathto>driverINF
Dism /unmounts-wim /commit /mountdir:<pathto>mount
- \$WinPEDriver$
- 無人インストール中のスクリプトの実行
- WinPE および監査モードのunattend.xml (ドライバーストア) (詳細については、「参照とリンク」セクションを参照してください)。
- Setupcomplete.cmdはドライバーの挿入に使用できますが、ユーザー エクスペリエンスが低く、初めてデスクトップを起動する際に遅延が発生する可能性があるため、推奨されます。
- Drvload.exe
- 現在実行中の OS にのみドライバーを挿入します。WinPE がある場合は通常、RAM ディスクです。
- Drvload <pathto。INF> (startnet.cmdでスクリプト化できます (例を参照)
Note
使用するドライバーの名前がインボックス ドライバー (イメージにネイティブに含まれる) と同じ場合、これらの新しく挿入されたドライバーは起動オペレーティング システムでは使用されず、更新されたドライバーについてはドライバーの製造元に問い合わせる必要があります。 (Windows ロゴ キット (WLK) に慣れている場合は、Devfund0005 を参照してください)
WinPE パス (初期ブート) 中にドライバーが読み込まれた場合、オペレーティング システムが再起動するまで、そのドライバーを削除するためのネイティブ メカニズムはありません。
Windows にドライバーを追加するプロセスの各手順には、複数の方法があります。 このメソッドは、拡張可能で可鍛性の高い展開シナリオを提供します。 以下のどの方法が特定の状況に最適かを判断する必要があります。
WinPE にアウトオブボックス ドライバーを含める詳細な手順
必要なセットアップ/ツール:
- 技術者用コンピューター - インストール メディアの構築/操作に使用されるコンピューター
- OPK/AIK がインストールされている
- USB/UFD または DVD
DISM.exeの使用:
- OEM プレインストール キット (OPK) または Windows 自動インストール キット (Windows AIK) をインストールする
- Start>Programs>Windows OPK (または Windows AIK) をクリックし、管理展開ツールのコマンド プロンプトを開きます。
- boot.wim をハード ドライブ (c:\Bin など) にコピーします。 Copype.cmdを使用して新しい WinPE を生成することもできます。ただし、追加のカスタマイズなしでsetup.exeが自動的に起動されることはありません。
- DISM を使用して boot.wim 内のインデックスの数を識別します。 インストール メディアから boot.wim をコピーする場合、2 つのインデックスが作成されます。 通常はインデックス 2 を変更します。それ以外の場合は index #1。
dism /get-wiminfo /wimfile:<wim_file>
Note
1 つのインデックスに挿入されたファイルは、他のインデックスでは使用できません。
- 'Mount' フォルダーを作成します (例: c:\Bin\mount)
- DISM を使用して wim をマウントします。
DISM /mount-wim /wimfile:c:\bin\boot.wim /index:1 /mountdir:c:\bin\mount
- ドライバーを検索可能なフォルダーに配置します (例: c:\bin\driver)。
- DISM を使用して、マウントされた WIM イメージにドライバーを追加します。
dism /image:c:\bin\mount /Add-Driver /driverpath:<path to INF>
- DISM ログを確認するか、コマンド プロンプトで DISM が完了を返すようにして、成功を確認します。
- Boot.wim への変更をマウント解除してコミットします。 このコマンドを実行する前に、c:\bin\mount の下で開いている可能性がある開いているウィンドウに対するすべてのハンドルを閉じます (また、コマンド プロンプトが c:\bin ディレクトリ構造以下であることを確認してください)。
dism /unmount-wim /mountdir:c:\bin\mount /commit
- DISM が WIM のマウントを正常に解除したら、USB/DVD に移行するための設定を行うことができます。 マウント解除中にエラーが発生した場合は、wim を再マウントして、パッケージが挿入されたことを確認できます。 ここで、DISM パラメーターの
/cleanup-wim
と/get-packages
が役立つ場合があります。 光学式または USB フラッシュ ドライブで起動可能な WinPE メディアを作成する手順については、このドキュメントの最後にある「リファレンスとリンク」セクションを参照してください。
\$WinpeDriver$ の使用
$WinpeDrivers$ は、検索Setup.exe追加のフォルダー構造であり、見つかった場合は、追加のドライバーをプルするために解析されます。 セットアップでは、この \$WinpeDriver$ フォルダーの下にある *を探しているファイルとフォルダーが再帰的に解析されます。INF ファイルを使用して、検出されたこれらのドライバーをドライバーストアにインストールしようとします。
フォルダー構造は、USB デバイスのルートで次のようになります。
\$WinpeDriver$
└\WiFi
└\Wireless1
└Wireless.INF
└Wireless.SYS
└Wireless.CAT (オペレーティング システムで必要)
Note
\Windows\Panther\Setupact.logを見ると、次のフォルダーへの参照が表示されます: PnPIBS: 事前構成済みのドライバー パスの確認...
PnPIBS: 事前構成済みのドライバー ディレクトリ C:$WinPEDriver$ を確認しています。
PnPIBS: 事前構成済みのドライバー ディレクトリ D:$WinPEDriver$ を確認します。
PnPIBS: 事前構成済みのドライバー ディレクトリ E:$WinPEDriver$ を確認します。
PnPIBS: 事前構成済みのドライバー ディレクトリ X:$WinPEDriver$ を確認しています。
無人応答ファイルの使用 (unattend.xml/autounattend.xml)
Windows は、マウントされたドライブのルートで無人応答ファイルを自動的に検索できます (ファイル名がautounattend.xml場合)。 また、スイッチを使用してSetup.exeで起動した場合、Windows は無人応答ファイルを取得します。 この応答ファイルは、ドライブの構成、プロダクト キー、コンピューター名、ドライバー ストアへのパス、OEM 会社の情報などの情報をインストールするオペレーティング システムに提供できます。 ドライバーをunattend.xmlに追加する方法については、このドキュメントの最後にある「参照とリンク」セクションを参照してください。
AIK Unattend.chm からの Drvstore を使用したAutoUnattend.xmlのスニペットの例を次に示します。 XML 出力では、デバイス ドライバーの追加の場所への UNC パスと、ネットワーク パスへのアクセスに使用される資格情報を指定します。
<DriverPaths>
<!-- First PathAndCredentials list item -->
<PathAndCredentials wcm:action="add" wcm:keyValue="1">
<Path>\\myFirstDriverPath\DriversFolder</Path>
<Credentials>
<Domain>MyDomain</Domain>
<Username>MyUsername</Username>
<Password>MyPassword</Password>
</Credentials>
</PathAndCredentials>
<!-- Second PathAndCredentials list item -->
<PathAndCredentials wcm:action="add" wcm:keyValue="2">
<Path>C:\Drivers</Path>
<Credentials>
<Domain>MyComputerName</Domain>
<Username>MyUsername</Username>
<Password>MyPassword</Password>
</Credentials>
</PathAndCredentials>
</DriverPaths>
Drvload.exeの使用
Drvload は、組み込みの WinPE コマンド プロンプトを起動した後にドライバーを追加するために使用される WinPE のツールです。 Drvload を使用する場合、ドライバーを識別してどこかに配置する必要があります。 WinPE のstartnet.cmdを使用して、Drvload のスクリプトを作成したり、WinPE の起動時または起動中に次のいずれかのアクションを実行したりできます。
- スクリプトを実行して次の操作を行います。
- インストール メディア (通常は USB デバイス) を識別します。
- すぐに使えるドライバーを追加する
- ハード ドライブと回復パーティションを構成する
- setup.exe起動するか、必要に応じて WIM を適用します。
- WIM 検証の展開/適用後。ドライバーの挿入または操作に使用する独自のツールを作成する開発者は、DevCon.exe便利なユーティリティである可能性があります。 DevCon.exeの詳細については、「参照とリンク」セクションを参照してください。
startnet.cmdの例
インストールをスクリプト化/自動化する手段として、USB デバイスは追加のドライバーの場所であるため、識別する必要があります。 この例では、起動時に自動実行される WinPE のスクリプトを使用して、USB ドライブを検出します。 このスクリプトは、セットアップの WinPE ステージでDrvload.exeを使用してドライバーをインストールする別のスクリプトを起動します。 スクリプトは WIM ファイルの外部に存在するため、簡単に変更できます。
WinPE Startnet.cmd (既定の WinPE で起動された最初のファイル) を使用してインストール メディアを識別する方法:
最初に、WinPE Startnet.cmdのインストール メディアの識別を自動化する方法が必要です。これは、既定の WinPE 構成で起動された最初のファイルです。 これを行うには、次の 2 つの方法があります。
ディスク ボリューム ラベルが "INSTALL_WIN7" の起動可能な WinPE USB フラッシュ ドライブを作成します。 次に、startnet.cmdの先頭に次の行を配置して、"INSTALL_WIN7" ディスク ボリューム ラベルを探します。
"INSTALL_WIN7" disk volume label: :ChkVar :: Locating USB Device IF NOT DEFINED usbdrv ( ECHO list vol | diskpart | find "INSTALL_WIN7" > pt.txt FOR /F "tokens=3" %%a IN (pt.txt) DO ( SET usbdrv=%%a^: ) del pt.txt /f /q
比較用の代替ドライブの場所メソッドとして、メディア上に "タグ" ファイルを作成します。
:SetOSvar @echo off IF NOT DEFINED usbdrv ( ECHO locating OS drive FOR %%b IN ( C D E F G H I J K L M N O ) DO ( IF EXIST %%b:\<specialfilename1> IF EXIST %%b:\ <specialfilename2> ( SET usbdrv=%%b^: ) ) )
Note
specialfilename1 & specialfilename2> USB フラッシュ デバイス上の指定された場所に存在することを確認する必要があります。
startnet.cmdで使用されている boot.wim にファイルを含めます。 これにより、X: ドライブにファイルが配置され、X:\<file 名>経由でアクセスできます。 boot.wim にファイルを追加すると、WIM メモリのフットプリントが増加します。
USB ドライブ文字がわかったら、ドライバーの挿入用の追加スクリプトを起動できます。 boot.wim を頻繁に変更することは困難であるため (毎回、変更をマウント/マウント解除してコミットする必要があります)、startnet.cmdの外部でスクリプトを実行する方が簡単です。 たとえば、USB フラッシュ ドライブのルートに "InstallOS.bat" というスクリプトを作成した場合、必要に応じてブートアップ/オートメーション プロセスを変更するようにこのファイルを簡単に変更できます。
"InstallOS.bat" を検索し、見つかった場合は起動する、startnet.cmd ファイルに必要なテキストの例を次に示します。
IF EXIST %usbdrv%\InstallOS.bat call InstallOS.bat Echo %time% %date%
Note
名前で示されているように、InstallOS.batは WinPE にドライバーを追加するだけではありません。 ただし、このドキュメントの目的上、スクリプト作成の詳細については説明しません。
この時点で、%usbdrv% は USB フラッシュ デバイスのドライブ文字で定義されているため、%usbdrv%\$WinpeDriver$ フォルダーに存在するドライバーは、InstallOS.batのスクリプトを使用して挿入できます。
たとえば、
Drvload.exe %usbdrv%\$winpedriver$\<device>\filename.INF
InstallOS.bat追加します。
このメソッドを使用すると、オペレーティング システムで使用できるドライバーが最初に取得され、WinPE によって使用されます。
Windows 回復環境 (WinRE)
WinRE は通常、ハード ドライブ上で静的になり、インストール中に自動インストールされるか、復旧シナリオ用に OEM によって作成/カスタマイズされます。 WinRE を使用してマシンを工場出荷時の既定値に回復する場合、ドライバーを最新バージョンに動的に更新する方法はありません。 WinRE.wim/Boot.wim などの関連するすべての WIM ファイルと、オペレーティング システムに適用するイメージに、挿入されたドライバーを使用してイメージを作成する必要があります。 これらのドライバーがすべて同じバージョンであることを確認します。
まとめ
setup.exeを実行する前に、すぐに使用できるドライバーを読み込む WinPE 環境を作成する必要がある場合は、このドキュメントに記載されているガイドラインに従って、最終的にインストールされたオペレーティング システムで必要なドライバーを使用します。 startnet.cmdによって起動されたDrvload.exeを利用して、USB フラッシュ ドライブの $WinPeDriver$ フォルダーにある特定のドライバーを読み込むスクリプトの作成は、最も柔軟な方法です。 この方法では、インストールされているオペレーティング システムに引き継ぐ WinPE フェーズ中にドライバーを読み込むことができます。 さらに、これらのドライバーを柔軟に更新できるドライバーの中央リポジトリを維持できます (ドライバー ストアで最新のドライバーを維持するため)。
データ収集
Microsoft サポートの支援が必要な場合は、「展開関連の問題について TSS を使用して情報を収集する」に記載している手順に従って情報を収集することをお勧めします。
参照とリンク
Note
OEM サイトからファイルをダウンロードできるようにするには、アカウントが必要です。