日本語版32ビットWindows PEの作成手順

Windows PE(Preinstallation Environment:プレインストール環境)はごく限られたサービス・機能だけを提供する最小限のOSです。
Windows PEを用意しておくと動作しなくなったOSのトラブルシュートや修復などもできるようになりますが一番大きな機能はDISM(Deployment Image Servicing and Management tool)かと思います。

Windows PEには64ビット版と32ビット版があります。
通常は64ビット版が使用されますが64ビット版ではそのWindows PE上で動作するアプリケーションが少ないため32ビット版の需要も無視できません。
そこで今回はWindows PEの日本語32ビット版の作成手順について紹介します。
尚、32ビット版Windows PEのインストールメディアはUSBメモリとします。
[参考サイト]
(1)Windows PE をインストールし、ドライブから実行する (フラット起動または非 RAM)
(2)WinPE: パッケージの追加 (オプション コンポーネント リファレンス)


  1. 準備するもの
    (1)16GB/32GBのUSBメモリ(Windows PEのインストールメディア)
    ※64GBのUSBメモリはWindows PEのMakeWinPEMedia /UFDによる書き出しメディアとしては使用できません(MakeWinPEMedia /UFDで書き出しを行う場合内部的にDISKPART内でFAT32でフォーマットしようとして「ERROR: Failed to format E:; DiskPart errorlevel -2147212243.」エラーとなります)。
    (2)Windows 8.1 Update対応のWindows ADKをインストールしたWindows 8.1 Enterprise ※今回は64ビット用の評価版を使用して検証しましました

  2. 32ビット版のWindows PEファイルセットの作成
    (1)スタートボタンの右クリックメニューの[検索]を起動して「展開」入力検索
    (2)ヒットした[展開およびイメージングツール構築]を右クリックして[管理者として実行]をクリック
    これによって「C:\Program Files (x86)\WindowsKits\8.1\Assessment and Deployment Kit\Deployment Tools>」というディレクトリをカレントにしたコマンドプロンプトが表示されます。
    (3)以下のコマンドを実行します。
    copype x86 C:\WinPE_x86
    (4)この時点のWindows PEファイルセットをメディアにインストールした場合のWindows PEには次の問題があります。
    ・表示はすべて英語となります。
    ・キーボードは英語キーボードレイアウトになっています。
    ・PowerShellが使用できません。
    そのため32ビット版のWindows PEファイルセットに対する日本語化とPowerShell機能の追加が最低限必要となります。

  3. 32ビット版のWindows PEファイルセットの日本語化とPowerShell機能の追加
    上記の「copype x86 C:\WinPE_x86」の実行に続けて以下のコマンドを追加実行します。
    rem Windows PEイメージのマウント
    dism /Mount-Image /ImageFile:"C:\WinPE_x86\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE_x86\mount"

    rem 32ビット版用の環境変数の設定(dism /Add-Packageコマンドを短く記述できるようにするためのものです)
    set mywinpeocs<フォンx86="C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs"

    rem 日本語対応化の前半(日本語ロケールパッケージと日本語フォントの導入)
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\ja-jp\lp.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\WinPE-FontSupport-JA-JP.cab

    rem PowerShellパッケージの追加(パッケージ間に依存関係があるため以下の順に実行)
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\WinPE-WMI.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\ja-jp\WinPE-WMI_ja-jp.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\WinPE-NetFX.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\ja-jp\WinPE-NetFx_ja-jp.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\WinPE-Scripting.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\ja-jp\WinPE-Scripting_ja-jp.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\WinPE-PowerShell.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\ja-jp\WinPE-PowerShell_ja-jp.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\WinPE-DismCmdlets.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\ja-jp\WinPE-DismCmdlets_ja-jp.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\WinPE-SecureBootCmdlets.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\WinPE-StorageWMI.cab
    dism /Add-Package /Image:"C:\WinPE_x86\mount" /PackagePath:%mywinpeocsx86%\ja-jp\WinPE-StorageWMI_ja-jp.cab

    rem 日本語対応化の後半(日本語版Windows PEにするための設定変更)
    dism /Image:"C:\WinPE_x86\mount" /Set-Allintl:ja-jp
    dism /Image:"C:\WinPE_x86\mount" /Set-InputLocale:0411:00000411
    dism /Image:"C:\WinPE_x86\mount" /Set-LayeredDriver:6
    dism /Image:"C:\WinPE_x86\mount" /set-TimeZone:"Tokyo Standard Time"

    rem イメージのアンマウントと上記変更内容のコミット(保存)
    dism /Unmount-Image /Mountdir:"C:\WinPE_x86\mount" /commit

  4. メディアへの日本語版32ビットWindows PEのインストール
    (1)USBメモリ側のセッティング
    USBメモリをPCに接続して以下のコマンドを実行します。
    diskpart
    list disk
    select disk USBメモリのディスク番号
    create partition primary
    format quick fs=fat32 label="Windows PE" ※ラベルはMakeWinPEMediaコマンドで書き換えられる可能性があります
    assign letter="P"
    active
    exit

    (2)以下のコマンドを実行してUSBメモリへのインストールを行います。
    MakeWinPEMedia /UFD C:\WinPE_x86 P:
    ※この時、以下のメッセージが表示されますので「Y」を応答します。
    WARNING, ALL DATA ON DISK DRIVE P: WILL BE LOST!
    Proceed with Format [Y,N]?Y ※ここでNを応答すると「UFD E: will not be formatted; exiting.」で書き出しスキップとなります
    Formatting P:...

    Setting the boot code on P:...

    Copying files to P:...


    Success

    [補足]
    (a)MakeWinPEMediaでUSBメモリへのインストールを行うと自動的にブート情報も書き込まれますのでbcdbootコマンドの実行は不要です。
    ※USBメモリからのUEFIモードでのブートだけでなくBIOSモードでのブートも可能です。
    (b)MakeWinPEMediaでUSBメモリへのインストールを行った後、USBメモリの内容を確認するとProgram FilesフォルダやWindowsフォルダ等は存在しません。
    実はsourcesフォルダの中にboot.wimというイメージが格納されておりWindows PEブート時にそのboot.wimがメモリに展開されてProgram FilesフォルダやWindowsフォルダ等が自動生成されます。

    (3)USBメモリのボリュームラベル変更(任意)
    Windows PEの64ビット版と区別するためにエクスプローラで例えば「WINPEX86」というようなボリュームラベルに変更しておくといいかと思います。
    Windows PEセッションでのXドライブのボリュームラベルは「Boot」で、例えばDドライブ扱いになったドライブのボリュームラベルがここで変更した「WINPEX86」となります。

  5. Windows PEのブートテスト
    USBメモリにインストールしたWindows PEのブートにはUSB接続デバイスからのブートもしくはUEFIモードでのブートに対応したPCが必要となります。
    (1)日本語版32ビットWindows PEをインストールしたUSBメモリをPCに接続
    (2)PCの電源オン
    (3)PC仕様に応じた操作でブートデバイスの選択画面を表示
    (4)起動デバイス一覧から日本語版32ビットWindows PEをインストールしたUSBメモリをUEFIモード(またはBIOSモード)で起動する項目を選択してEnterキー押下
    (5)解像度1024x768のスクリーンに以下のようなコマンドプロンプト画面が表示されます。
    X:\Windows\system32>wpeinit ※wpeinitはWindows PEセッションの開始コマンドで自動起動されます
    ※「X」はWindows PE本体(メモリ中に展開されたProgram FilesフォルダやWindowsフォルダ等)の仮想パーティションのドライブ文字で「X」固定です
    X:\Windows\system32>
    (6)コマンドプロンプトでnotepadを起動すると日本語メニューが表示されます(但し、Windows PEの現仕様では日本語入力は不可)。
    (7)Windows PEセッションのシャットダウンは「wpeutil shutdown」で行ないます。

  6. ユーザプログラムやユーザデータの組み込みについて
    (1)インストーラが必要となるユーザプログラムはWindows PEに組み込むことはできません。
    (2)圧縮ファイルを展開するだけのアプリケーションについてはエクスプローラでC:\WinPE_x86\media\myappのようなフォルダをエクスプローラで作成してそこへ展開されたフォルダをコピーします。
    (3)アプリケーションのEXEファイルをWindows PEセッションで起動すると種々のエラーとなる可能性が高いです。
    例えばQEMUのqemu.exeを起動すると「コンピュータにMSACM32.dllがないため、プログラムを開始できません。」エラーとなります。
    そこでftpでX:\Windows\System32にMSACM32.dll/MSACM32.drvを追加するとメモリ参照エラーになります。
    結局は日本語版Windows PEをインストールしたメディアのmyappフォルダにアプリケーションフォルダをコピーしてWindows PEセッションで動作するかどうかを逐次確認するしか手はないようです。
    しかしPortableAppで公開されているアプリは動作する可能性が高いかも知れません。
    下記はPortableAppで公開されている「GIMP Portable」を使用している様子です(GIMPのシアツールを操作している様子)。



    こちらはGIMP Portableでスクリーンキャプチャ([File]-[Create]-[Screen Shot]使用)したWindows PEデスクトップ例です。

    (4)ユーザデータについてはエクスプローラでC:\WinPE_x86\media\mydataのようなフォルダをエクスプローラで作成してそこへユーザファイルを格納すればWindows PEセッションからアクセスできます(但し、X:\mydataフォルダではなく、例えばD:\mydataフォルダのような扱いとなります)。
    (5)ftpでファイル送受信する場合は事前に「wpeutil DisableFirewall」でファイアウォールを無効にしておきます(ファイアウォールの有効化は「wpeutil EnableFirewall」)。

  7. Windows PEの解像度変更
    Windows PE環境にDisplay Changerを導入して「dc.exe -listmodes」を実行すると以下のように表示されました。



    そこで解像度を1600x1200にするためのXMLファイル(詳細略)を用意してwpeinit -unattend=xxx.xmlを実行すると解像度が変わります。
    1600x1200の解像度なら通常のWindowsデスクトップ並みに使用できます。
    下記はGIMPのスクリーンショットで取得したデスクトップ画像です。



    ・実寸画像はこちらです。

  8. Hyper-V仮想マシンでのWindows PEの実行例