Help us understand the problem. What is going on with this article?

Windows PEを起動させたら操作なしにwimの適用を行いデスクトップ画面まで表示させる

More than 1 year has passed since last update.

はじめに

カスタムしたWindows イメージ ファイル (.wim)をWindows PEを使用して適用した際の知見を投稿します。
ネット上にはいくらでも情報がありますがまとまったものがなかったため、大変参考になったサイトと合わせて紹介します。

参考情報

教科書

Windows PEとは

sysprepとは

応答ファイルについて

diskpartについて

bcdbootについて

Windows PEを起動させたら操作なしにwimの適用を行いデスクトップ画面まで表示させる

ここからがネットを探しても見つからなかった部分でした。大した話ではなかったんですけど。

Windows PEのStartnet.cmdに実施したいコマンドを追記して自動化する

これが全てで、ここに記載したコマンドをWindows PE起動時にやってくれます。

WinPE:マウントし、カスタマイズから引用すると

スタートアップ スクリプトを追加します。
カスタム コマンドを含める Startnet.cmd を変更します。 このファイルは、あるマウントされたイメージにあるC:\WinPE_amd64\mount\Windows\System32\Startnet.cmdします。
このファイルから、その他のバッチ ファイルまたはコマンド ライン スクリプトを呼び出すこともできます。
プラグ アンド プレイまたはネットワークのサポートへの呼び出しを含めることを確認しますwpeinitカスタム Startnet.cmd スクリプトにします。 詳細については、次を参照してくださいWpeinit および Startnet.cmd:。WinPE のスタートアップ スクリプトを使用してします。

自分が記載した例だと

startnet.cmd
wpeinit
powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
diskpart /s x:\CreatePartitions-UEFI.txt
dism /Apply-Image /ImageFile:e:\install.wim /Index:1 /ApplyDir:c:\
bcdboot C:\Windows /l ja-jp
exit

です。一行目から説明します。

wpeinit

最初から書かれています。

powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

電源プランを高パフォーマンスにするらしいです。
(参考:Windowsイメージ操作まとめ)

diskpart /s x:\CreatePartitions-UEFI.txt

diskpartを指定したテキストファイルの内容に沿って実施してくれます。
xドライブはWindows PEを起動させた際のドライブ文字で常にxです。
Windows PEにファイルを追加する方法は単純で、マウントしたフォルダにファイルを追加してアンマウントするだけです。
マウントしたフォルダ直下に配置すれば、x:\直下に見えます。

WinPE:マウントし、カスタマイズから引用すると

ファイルとフォルダーを追加します。
ファイルとフォルダーを c: ドライブにコピー\WinPE_amd64\フォルダーをマウントします。 これらのファイルは、x: に表示されます\WinPE 内のフォルダー。
WinPE 速度が低下する RAMDisk の既定の環境で使用可能なメモリがいっぱいにこれらと、多くのファイルを追加しないでください。

です。最初はここにwimを置こうと思ったんですけど上述の通りらしいのでやめました。

diskpartに指示する内容はWindows10のOSイメージ展開の新常識(その1)――推奨パーティション構成 (1/2)を参考にさせて頂きました。

CreatePartitions-UEFI.txt
select disk 0
clean
convert gpt
create partition efi size=100
format quick fs=fat32 label="System"
create partition msr size=16
create partition primary size=143139
format quick fs=ntfs 
assign letter=d
create partition primary 
shrink minimum=1024
format quick fs=ntfs label="Windows"
assign letter=c
create partition primary
format quick fs=ntfs label="Recovery tools"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
list volume
exit

自分の場合はUEFIだったのでgptのほうをベースにしています。CドライブとDドライブに分けたかったので

create partition primary size=143139
format quick fs=ntfs 
assign letter=d

を追記しました。
diskpartはcreate partitonなりを実行するとそれが選択状態になるっていうところが分かりにくかったですね。

dism /Apply-Image /ImageFile:e:\install.wim /Index:1 /ApplyDir:c:\

wimをCドライブに適用しています。
Windows PEはドライブ文字が不定なので(改訂 管理者必携! 最強のデータ・サルベージ・ツールWindows PE 3.0(前編) (4/4))必ず成功する、とは断言できないのがつらいところです。

ただリカバリする際に以下の点に気をつけておくとドライブ文字がずれることをかなりの確率で低減させることができるかと。

  • 外付けの何かは全て外しておく。
    余計なものを刺しておくとドライブ文字がずれることになります。ただしwimが入ったusbメモリだけは刺しておきます。
  • windows PEはDVDに焼いて起動させる。
    上記の通り二つのUSBメモリ(Windows PEとwim)を刺すとどっちがどっちになるのかがわかりません。
  • diskpartを実施して明示的にドライブ文字を指定する。
    事前にdiskpartを実施することでwindows PE起動時に不定に付与されるドライブ文字を気にする必要がなくなります。

自分の経験則で言うと内臓HDDやUSBメモリが優先的に配置されてDVDドライブ等が後から設定されるっぽいです。
今回の例で言うと
内臓HDD -> CとDがどちらかに設定される
外付けUSB -> Eが設定される
内臓DVD -> Fが設定される

パーティションが一つであれば外付けUSBはD確定!?

bcdboot C:\Windows /l ja-jp

このコマンドを忘れてて、起動しないで焦りました。
ここについてはあんまり勉強できていないのですが多分これだけで足りているはず。

exit

Windows PEを終了します。
やりすぎだとは思いますがエンドユーザーがひとつもコマンドを打ちたくないとのことで記述しています。
これをしてしまうとエラーが起きた際に何もわからないので利便性とのトレードオフかと。

まとめ

上記Windows PEを使用すれば起動デバイスにDVDを選択するだけでクローニングされたマシンが出来上がります。
大量にクローニングするマシンを用意する際の参考になれば幸いです。

おまけ

Windows PEをDVD起動させた際の"Press any key to boot from CD or DVD...."を除去する

参考

上記に書かれているpowershellを MakeWinPEMedia /ISO したisoに適用してあげれば除去できます。

kwhrkzk
業務系に従事。WPF,PRISM,C#,F#,.NET Core,Laravel,Vue,TypeScript,DDD,CQRS,SOLIDらへんに興味有。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away