本記事ではKACE システム導入アプライアンス (SDA)のスクリプトが想定するシステムイメージの書き込み先と、USBを使用してKBEを起動する場合の考慮事項について説明します。
Sysprep済みイメージの配布やスクリプト形式のインストールでは多くの場合、プレインストールタスクで内蔵ストレージを初期化してから必要なパーティションやファイルシステムを作成します。
KACE SDAのデフォルトのプレインストールタスクのスクリプトではシステムイメージの書き込み先として Disk 0 に作成されたパーティションのドライブレターCのボリュームへイメージが書き込まれるように構成されています。
プレインストールタスクはDiskpartを使用あるいは呼び出しており、KACE SDAのデフォルトには以下のものがあります。またKBEのベースのOSであるWinPEでも基本的には内蔵ディスクから若い番号が割り当てられ、ボリュームに対しては C,D,E...の順でドライブレターを割り当てるはずです。
【USB KBE起動時の注意】
非PXE Boot、すなわち USBメディアからKBE起動を行うといくつかのケースで上記タスクがうまくいかないことがあります。
そのケースとはディスク番号0 やドライブレターCがKBE起動・展開用のUSBに割り当てられてしまう場合です。
ドライブレターCがUSBメディアのパーティションに割り当てられると、プレインストールタスク実行時にUSBのボリュームがフォーマットされてしまいます。
USBにイメージを格納している場合、展開が続けられなくなります。
KBE起動のみの用途でUSBを挿していたとしても書き込み先がUSBメディアになるため展開は成功しません。
Disk 0 が USBメディアに割り当てられた場合、プレインストールタスク実行時にUSBメモリが初期化されてしまいます。
USBに展開用システムイメージを格納している場合、展開が続けられなくなります。
USBをKBE起動用のみに使用していて運よく無事内蔵ディスクのCドライブがフォーマットされれば展開は進むかもしれませんがブート用の情報がうまくセットされない可能性があります。
回避策:
・可能な限り、PXE Bootを使用してください。USBメディアが存在することによる問題をすべて回避できます。
・USBに Disk0 が割り当てられる事象については、内蔵ストレージに若い番号が来るようにする必要があります。KBE/WinPEではどうしようもなく、ドライバーの調整やBIOS設定のストレージ関係の設定で回避できる可能性があります。
USBに Disk 0 が割り当てられることが回避できない場合に限りタスクのほうを編集して、パーティション作成タスクで指定しているディスク番号を適切に変更する必要があります。(ただしその他のデバイスでの汎用性が少ない)
USBにドライブレターCが割り当てられる事象に対しては、
どのような順でCが割り当てられたのか(見えるパーティションがUSBしかないならUSBがCになる)確認して、
必要なら内蔵ストレージにひとつパーティションを作成してしまう(そこがCになれば次のKBE起動からはUSBはD以降になれる)ことも検討してください。
キャプチャ時にWindowsボリュームをCではなくWやQなどアルファベットの後ろ側の文字(かつX,Y,Tなどは使わない)に変えてキャプチャすることも可能ですがその場合デフォルトのタスクを複製して改変したものを使用する必要があります。
USBからのKBE起動時に次のように展開をキャンセルしてディスク番号, ドライブレターを調べることができます。
(1). オフライン展開開始時「この操作により、このマシン上のすべてのデータが消去される場合があります。続行しますか?」というダイアログが現れたら、 背景の deploy.bat のコマンドプロンプトウインドウをクリックしフォーカスを当ててCtrl-Cを押します。
メモ: 起動USBのドライブレター割り当てが C かどうかは startnet.cmdのウインドウにて "*** Deploying image from UFD at C: "と表示されていることで判断できます。
(2). 「バッチ ジョブを終了しますか?」に対し大文字Yで答えて終了します。
(3). 残ったコマンドプロンプトウインドウにてdiskpartからディスクとボリュームの一覧を確認します。
diskpart
DISKPART> list disk
DISKPART> list volume
次のことを確認します。
・展開に使うUSBのDisk番号がDisk 0でないこと
・USBドライブのパーティションにドライブレターCが割り当てられていないこと
上の画像の例では内蔵ディスクがDisk 0(USBがDisk 0ではないため致命的ではない)と認識されており、USBボリュームのドライブレターがCであるため、イメージの展開先ドライブレターがCの場合、そのままでは展開に失敗します。(プレインストールタスクのスクリプト実行時にドライブ文字の割り当てが失敗するため)
さらに volume 0(select volume 0)を選択してCが割り当てられたボリュームのドライブレターを他の文字にアサインすることで展開先ドライブレターCとUSBメモリのドライブレターの衝突から生じる問題を回避できます(assign letter=U)。
USBのドライブレターをC以外に変更して diskpart をexitしたら、X:\Windows\System32のコマンドプロンプトから startnet.cmd を実行すると展開が開始されます。
X:\Windows\Inf\setupapi.dev.log前掲の展開キャンセルの手順(1)(2)を行い、コマンドプロンプトからUSBドライブに保存します。
X:\Windows\Inf\setupapi.offline.log
X:\Windows\system32\winpeshl.log
X:\Windows\system32\wpeinit.log