WindowsPE3.0の作成

概要とかそういうの

WindowsPE3.0を作成する必要に迫られたので、その手順の記録です。

WindowsPEのターゲットアーキテクチャはx86、作業フォルダはc:\temp\winpe_x86としています。

各コマンドの使い方はユーザーズガイドもしくは/?オプションでのヘルプを参照、です。

手順

手順の流れは次のようになります。

  1. WindowsAIKのインストール
  2. WindowsPE3.0のCD作成
  3. \mountにマウントしたイメージの保存

WindowsAIKのインストール

  1. Microsoft(Windows® 7 用の Windows® 自動インストール キット (AIK))からWindowsAIKをダウンロードします。
  2. ダウンロードしたファイルはisoファイルなので、なんらかのツールで仮想DVDドライブにマウントします。今回はVirtual CloneDriveを使用しました。
  3. インストーラを起動します(…の前に、ステップ バイ ステップ展開ガイド(S)は一応目を通しておきましょう)
     image
    ウィザードはほぼ一方通行なので、迷うところはないと思います。

WindowsPE3.0のブート可能なCDを作成する

基本的に「Windows 7 用 Windowsプレインストール環境 (WindowsPE) ユーザーズガイド」の「チュートリアル: CD-ROM から Windows PE をブートする」と「オフラインの Windows PE イメージにデバイス ドライバーを追加する」を参照して作業しました。ユーザーズガイドは[スタート]→[Microsoft Windows AIK]→[Documentation]にあります。
#最初は「チュートリアル: 起動可能な Windows PE RAM ディスクを CD-ROM に作成する」を参照して作業してしまっていたので、微妙にチュートリアルと手順が前後しています

また、作業に当たってはな○の 屋(WinPE 3.0 ( Windows AIK for Windows 7 ))も参照しています。感謝。

  1. Deployment ツールのコマンド プロンプトを起動します。
    [スタート]→[Microsoft Windows AIK]→[Deployment ツールのコマンド プロンプト] を管理者権限で起動します。
  2. ディレクトリ構造およびアーキテクチャに必要なすべてのファイルをコピーします。
    copype.cmd x86 c:\temp\winpe_x86
  3. 基本イメージのコピーおよびリネームを行います。
    copy c:\temp\winpe_x86\winpe.wim c:\temp\winpe_x86\ISO\sources\boot.wim 
  4. ImageXをコピーします。

    チュートリアルには省略可能と書いてありましたが、「実行することをお勧めします」とも書いてあるので、やっておきました。

    copy "C:\Program Files\Windows AIK\Tools\x86" C:\temp\winpe_x86\iso\

    #157MBもありますが…

  5. 基本イメージをローカルの Windows PE ディレクトリにマウントします。
    dism.exe /Mount-Wim /WimFile:C:\temp\winpe_x86\winpe.wim /index:1 /MountDir:C:\temp\winpe_x86\mount
  6. 必要なドライバを追加します。今回はめんどくさいので/recurseオプションを使用しました。
    1. 追加したいドライバを1つのディレクトリに全部入れておきます。
    2. 次のコマンドでイメージにドライバを追加します。

      dism /Image:c:\temp\winpe_x86\mount /Add-Driver /Driver:C:\temp\driver /recurse

      ちなみに今回は、 Intel PRO/100 VE と Broadcom Nexterme 57xx Gigabit Controller のドライバが欲しかったので、それらを各社のWebサイトからダウンロード(PROVISTA32.exe、win_vista_2k8_32-12.2.2.1.zip)して使用しています。

  7. ブート サポートを追加します。
    
    copy c:\temp\winpe_x86\ISO\bootmgr c:\temp\winpe_x86\mount
    mkdir c:\temp\winpe_x86\mount\boot
    xcopy /cherky c:\temp\winpe_x86\ISO\boot c:\temp\winpe_x86\mount\boot\ 
  8. BCDストアを構成します。 #これ、必須なのかなぁ…

    チュートリアルの文字列をそのままコピーすると、ダブルクオート(”)が全角になっていて正しいコマンドラインになりません。修正が必要です。

    ぶっちゃけ1行ずつ入力するのは馬鹿らしいので、チュートリアルのを前半と後半(GUIを取得するまでとそれ以降)に分けてテキストエディタにコピペし、適切に置換してコマンドプロンプトにコピペするのが楽です。

    Del c:\temp\winpe_x86\mount\boot\BCD
    Bcdedit /createstore c:\temp\winpe_x86\mount\boot\BCD
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -create {bootmgr} /d "Boot Manager"
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -set {bootmgr} device boot
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -create /d "WINPE" -application osloader
    ↑のコマンドが完了するとGUID値が表示されるので、それをメモ帳にでもコピペしておきます。今回は{xxx}と表記します。
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -set {xxx} osdevice boot
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -set {xxx} device boot
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -set {xxx} path \windows\system32\winload.exe
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -set {xxx} systemroot \windows
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -set {xxx} winpe yes
    Bcdedit /store c:\temp\winpe_x86\mount\boot\BCD -displayorder {41bf26d5-de5c-11de-b3df-00219b6079a7} –addlast 
  9. isoイメージを作成します。

    oscdimg -n -m -o -bc:\temp\winpe_x86\etfsboot.com c:\temp\winpe_x86\mount c:\temp\winpe_x86\winpe_x86.iso 
  10. 上記で作ったISOファイルをCD-Rに焼いて完成です。

    CDブートさせてみたら、しました。

\mountにマウントしたイメージをの保存

  1. 一応、イメージへの変更を保存するためにはアンマウントする必要があるそうなので、アンマウントします。

    ここ、結構長い時間コマンドプロンプトが黙ったままになります。10~20分程度は我慢するほうがよいと思われます。

    dism /unmount-wim /Mountdir:c:\temp\winpe_x86\mount /commit
  2. 上記アンマウント処理時にこんなエラーがでました。

    
    エラー: 0xc142011d
    
    指定されたマウント済みイメージを WIM にコミットして戻すことができません。これはイメージの一部のみがマウント解除されていたり、イメージがマウント中であることが原因です。以前にこのイメージをコミットしてマウント解除したことがある場合は、コミットは正常に終了した可能性があります。コミットが正常に終了しているかどうかを確認してから、コミットなしでマウント解除してください。
    
    DISM ログ ファイルは C:\Windows\Logs\DISM\dism.log にあります

    であれば、コミットが正常に終了していることを期待して

    dism /unmount-wim /Mountdir:c:\temp\winpe_x86\mount /discard

    してみたけど

    
    エラー: 0xc1420117
    
    ディレクトリを完全にはマウント解除できませんでした。これは通常、アプリケーションがマウント ディレクトリ内のファイルを開いていることが原因です。マウント解除のプロセスを完了するには、これらのファイルを閉じてから、再度マウントを解除してください。
    
    DISM ログ ファイルは C:\Windows\Logs\DISM\dism.log にあります

    仕方ないので、クリーンアップしました。

    dism.exe /Cleanup-Wim

    たぶん、コミット自体はちゃんとされていると思います。たぶん。もう一回マウントしてISOイメージ作ってみればわかるだろうけれど、面倒なのでやってません。


Windows AIKの作業はWindows7 Ultimate 64bitで行っています。 WindowsPE3.0はPentium4のマシンで起動させました。

Firefoxでコード部分の表示が切れてますね…そのうち対策します。

コメントを残す