« Vista エピソード その3 | トップページ | しばしば落ちるW51H »

2007年11月25日 (日)

WinPE2.0 (WindowsAIK で マルチwimイメージ & DOSブート なUSBメモリ作成)

Windows AIK がらみ、WindowsPE2.0 というよりむしろ bcdedit.exeレジストリ編集に関してのメモ、

  • USBメモリブートで複数のWinPE2.0イメージを選択起動できるようにする
  • そこはかとなく WindowsRE と DOS も選択起動可能にする
  • WindowsPE のコマンドプロンプトを初めから 9999行 のバッファで
  • WindowsPE でも CapsLock と 左CTRL を入れ替え

が、趣旨。
WinPE2.0 (Windows AIK) とか WinPE2.0 & DOS 2in1 ブータブルUSBメモリ など重複ばかりなのは気にせず、ほぼ全部入りメモ。
短縮したいので、Windows Automated Installation Kit (Windows AIK) は WAIK、USBメモリ は WAIK のマニュアルに倣って UFD (USB Flush Device) 、Windows Recovery Environment を Windows RE としたり WinRE としたり。

参考にしたサイトなど

調達 & 準備物

  1. Windows AIK
    ダウンロードセンターの (旧版) Windows 自動インストール キット (AIK) から入手。
  2. UFD
    USBメモリ
    150MB 前後の wimイメージ を切り替えることになるので最低でも 512MB
    eSATA HDD なら大きくて速くて幸せかも
  3. Windows Vista インストールメディア
    WindowsRE を試すなら必要

以下、あると便利

  1. Windows Vista
    WindowsPE2.0 な環境で代替可能ではあるものの Vista があった方が楽。
    手持ちが Vista Business 64bit 版 しか無いので微妙に不便。
  2. VirtualPC 等の仮想環境
    このへん VirtualPC というか VirtualPC 2007 日本語版 からゲット。
    x64 な WinPE2.0 環境も試すには VMware とか。
    直接 UFD を編集する事も多いのであまり使わないかも。
  3. 既存のWinPE2.0
    元があれば一から作るよりは早いので

WinPE2.0 としてのブータブルUSBメモリ作成

まず、WAIK のインストールと WinPE2.0 のブータブルUFD を作成。

WAIK のインストール

  1. ダウンロードセンターからダウンロードしてきた *.img ファイルを DAEMON Tools でマウント (CDに焼くのは面倒なので)
  2. readme.rtf は事前によく読む
    ドキュメントは多少アップデートされている⇒ダウンロードセンター US
  3. 32bit XP SP2 なら必要に応じてWAIK の CD にある HOTFIX\WINDOWSXP-KB914882-X86-JPN を適用 & 再起動
    KB926044 も。
  4. WAIK をインストール
    WAIK の CD の Autorun に任せたり STARTCD.EXE を実行したりして、必要に応じて .NET framework2.0 と MSXML6.0 Purser を入れながらセットアップ
  5. ヘルプの
    [Windows AIK] → [Documentation] → [Windows PE ユーザーズ ガイド]
    から
    • 「Windows PE をカスタマイズする」
      → 「Windows PE イメージを構築する」と
    • Windows PE をカスタマイズする
      → Windows PE のチュートリアル
      → チュートリアル : 起動可能な Windows PE RAM ディスクを UFD に作成する

    は少なくとも目を通してから作業開始

作業場所は d:\winpe\x86 にしたいので、予め d:\winpe を作成しておく

  1. Windows PE Tools コマンド プロンプト 」を実行
  2. 必要ファイルをコピーする為に以下のように実行 (x86 の場合)
    >copype x86 d:\winpe\x86

  3. コピーが完了したら
    >imagex /apply winpe.wim 1 mount
    のように基本的な作業環境を展開

    カレントディレクトリと作業ディレクトリが一致していなければパスはフルパス指定する
    >imagex /apply D:\winpe\x86\winpe.wim 1 D:\winpe\x86\mount
    のようにする(上を一行で)
    ここからカレントディレクトリが d:\winpe\x86 である事を前提にして相対パスでの場合のコマンド例

  4. パッケージの確認
    >peimg /list mount
    日本語版 Windows AIK では日本語環境がインストール済みなのが分かる

  5. パッケージの追加
    >peimg /install=WinPE-Scripting-Package mount
    な感じで順次追加

    英語版 Windows AIK で日本語言語パックと日本語WMIパッケージをインストールするには、各パッケージをインポートしてからインストール
    >peimg /import=e:\WINPE_LANGPACKS\X86\JA-JP\LP.CAB mount
    >peimg /import=e:\WINPE_LANGPACKS\X86\JA-JP\WINPE-WMI_JA-JP.CAB mount

    >peimg /install=Microsoft-Windows-WinPE-LanguagePack-Package mount
    >peimg /install=WinPE-WMI-Package mount
    WAIKの言語パックを利用する場合、 e: がWAIKのインストールCDの時は上のような感じで(それぞれ一行で)

  6. 必要なパッケージの追加が完了したら再確認
    >peimg /list mount

  7. パッケージ追加作業の確認が済んだら固める準備
    >peimg /prep mount
    を実行

  8. ドライバの追加
    >peimg /inf=..\drv\sata_ahciVista32\nvstor32.inf mount
    な感じで必要に応じて順次追加 (上を一行で)
    d:\winpe\drv\sata_ahciVista32 に置いたahci ドライバを相対パス指定で追加している例。

  9. WinPE2.0環境を起動直後から101キーボード配列で利用する時には以下も実行
    >peimg /lang=ja-JP /layerdriver=1 mount
    106キーボード配列に戻したい時は /layerdriver=6 で再実行

    日本語IME (IME10)を利用したい時には Microsoft KB926181 を参照

  10. boot.wim 再作成
    >imagex /boot /capture mount ISO\sources\boot.wim "MyPE"
    上を一行で

  11. 確認用 isoイメージ の作成
    >oscdimg -n -betfsboot.com ISO MyPE.iso

    相対パスだと分かりにくさ倍増なので絶対パスでの記述も参考までに
    >oscdimg -n -bD:\winpe\x86\etfsboot.com D:\winpe\x86\ISO D:\winpe\x86\MyPE.iso
    上を一行で

  12. 動作確認
    VirtualPC や VMWare で生成した ISOイメージ をマウントして起動
    おかしな事になっていなければWinPE2.0のイメージが完成

    作成した ISOイメージ は DVD(もしくはCD) に焼いておくと何かの時に便利

  13. UFD こと USBメモリ を準備
    Vista上、もしくは WinPE2.0 環境(DVD/CDなどからブートしたWinPE2.0)で 以下のように。 ( XP で diskpart を実行してもUSBリムーバブル系は選択できないので)
    >diskpart
    DISKPART>list disk
    DISKPART>select disk 1
    DISKPART>clean
    DISKPART>create partition primary
    DISKPART>list partition
    DISKPART>select partition 1
    DISKPART>active
    DISKPART>format fs=fat32 label=flash
    DISKPART>assign
    DISKPART>exit
    基本は上のパターン
    disk 番号の確認と partition の確認はその都度しておいた方が無難

  14. 作成している WinPE2.0 イメージである ISO 配下のファイルとフォルダを全て UFD にコピーする
    ここまでの手順の流れなら d:\winpe\x86\ISO の下にあるファイルとフォルダ

  15. USB Flash Device からのブート順位を適切に設定した PC で WinPE2.0 が起動可能か確認する

マルチブート用 wimイメージ の準備

せっかくなので x64 なイメージを少しカスタマイズしつつ作成してみる

  1. Windows PE Tools コマンド プロンプト 」を実行
  2. 必要ファイルをコピーする為に以下のように実行 (x64 の場合)
    >copype amd64 d:\winpe\x64
  3. x86 も x64 も 1. から 10. までのステップは基本的に同じなので省略
    ドライバの追加は x64(amd64) 用になるので注意

  4. レジストリのカスタマイズ
    これが目標の一つ
    CapsLock と 左Ctrl を入れ替える 』 と 『 プロンプトのバッファサイズを増やす
    のサンプル
    1. レジストリエディタを起動する
    2. HKEY_LOCAL_MACHINE を選択 (ハイブの読み込み可能位置で適当に)
    3. ファイル ⇒ ハイブの読み込み で
      d:\winpe\x64\mount\Windows\System32\config

      SYSTEM
      を指定して名前を pesystem とする (名前が重複しないように任意)
    4. 同様に
      ファイル ⇒ ハイブの読み込み で
      d:\winpe\x64\mount\Windows\System32\config

      DEFAULT
      を指定して名前を peuser とする (名前が重複しないように任意)
    5. CapsLock と 左Ctrl を入れ替えを行う
      [HKEY_LOCAL_MACHINE\pesystem\ControlSet001\Control\Keyboard Layout] までたどる
      新規のバイナリ値で "Scancode Map" を以下を追加
      00,00,00,00,00,00,00,00,
      03,00,00,00,3a,00,1d,00,
      1d,00,3a,00,00,00,00,00
      インポートさせるなら以下の内容のファイル (ハイブの読み込み位置には注意!!)

    6. プロンプトのバッファサイズを増やす
      画面バッファとコマンドのヒストリを増やしたいので次の変更
      [HKEY_LOCAL_MACHINE\peuser\Console] までたどる
      新規の dword値 で以下になるように追加
      "ScreenBufferSize"=dword:270f0050
      "HistoryBufferSize"=dword:00000064
      "NumberOfHistoryBuffers"=dword:00000008
      インポートさせるなら以下の内容のファイル (ハイブの読み込み位置には注意!!)

    7. レジストリの編集作業が完了したら読み込んだハイブ
      [HKEY_LOCAL_MACHINE\pesystem]
      [HKEY_LOCAL_MACHINE\peuser]
      を選択してそれぞれ
      ファイル ⇒ ハイブのアンロード
      でアンロードを必ず実行する

  5. 起動直後にプロンプトのウィンドウを3つとメモ帳を開きたいので startnet.cmd をちょこっと編集
    オリジナルは d:\winpe\x64\mount\Windows\System32\startnet.cmd

    と、極めてシンプルなバッチファイル

    プロンプトの画面バッファの値を強制的に上書きとプロンプトのウィンドウとメモ帳を出したいので次のように


    何か追加したいときや別のバッチを呼びたい時はこのファイル startnet.cmd を適宜編集

  6. boot.wim 再作成
    >imagex /boot /capture mount ISO\sources\boot.wim "MyPE x64"
    上を一行で

  7. 仕上がり具合を UFD や VMWare などで確認しておく

 

複数のPEイメージを選択起動 : bcdeditでブートメニュー編集

XP や 2003 で作業をする場合 bcdedit.exe は ja_JP な bcdedit.exe.mui とセットでパスの通った同じ場所にコピーしておくと多少作業がしやすい。
日本語版 WAIK を利用していれば、それぞれ D:\winpe\x86\mount\Windows\System32\bcdedit.exe と D:\winpe\x86\mount\Windows\System32\ja-JP\bcdedit.exe.mui などを利用。


準備

  1. UFD を取り付けドライブレターを確認
    以降ここでは G: とする
    念のために BCDストア のある g:\boot をコピーしておくと吉
  2. 追加したい wim を適当な名前に変えて UFD にコピーする
    1. まず boot.wim を mype64.wim にリネーム
    2. 続いてmype64.wim を g:\source へコピー
  3. プロンプトの準備
    必須ではないけれど、変更していないと不便なので。
    1. プロンプトの「規定値」もしくは「プロパティ」を選択
    2. オプションで
      • バッファサイズ を 100 に
      • バッファ数 を 8 に
      • 簡易編集モード にチェックが入っていなければ チェック
    3. レイアウトで
      • 画面バッファのサイズの高さを 9999 に
    4. プロンプトを短くするために
      >prompt $g

bcdedit でブートメニュー編集

【2008/02/09:追記】
BCDストア編集作業を多少楽にするバッチファイルはこちら

 

  1. BCDストアに {ramdisktoptions} オブジェクトを作成する
    基本は次
    >bcdedit /store BCDストア /create {ramdiskoptions} /d "Ramdisk options"
    >bcdedit /store BCDストア /set {ramdiskoptions} ramdisksdidevice partition=Drive
    >bcdedit /store BCDストア /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
    それぞれ一行で

    実際には次のような感じで
    >bcdedit /store g:\boot\bcd /create {ramdiskoptions} /d "Ramdisk options"
    >bcdedit /store g:\boot\bcd /set {ramdiskoptions} ramdisksdidevice boot
    >bcdedit /store g:\boot\bcd /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
    それぞれ一行で

  2. BCDストアに新しいブート アプリケーション エントリを作成作成する(★1)
    基本は次を一行で
    >bcdedit /store BCDストア /create /d "メニュー項目表示" /application OSLOADER
    実行すると ID (GUID) が生成される

    実際には次のような感じで GUID が生成される
    >bcdedit /store g:\boot\bcd /create /d "MyPE x64" /application   OSLOADER
    エントリ {12345678-abcd-1234-abcd-123456789abc} は正常に作成されました。

  3. 生成された GUID を元に WinPE2.0 wimイメージ用のエントリを作成する(★2)
    エントリの作成は基本的に以下ような感じで
    >bcdedit /store BCDストア /set {GUID} device ramdisk=[boot]\sources\mype64.wim,{ramdiskoptions}

    >bcdedit /store BCDストア /set {GUID} path \windows\system32\boot\winload.exe

    >bcdedit /store BCDストア /set {GUID} osdevice ramdisk=[boot]\sources\mype64.wim,{ramdiskoptions}

    >bcdedit /store BCDストア /set {GUID} systemroot \windows

    >bcdedit /store BCDストア /set {GUID} winpe yes

    >bcdedit /store BCDストア /set {GUID} detecthal yes
    それぞれ一行で

    実際には次のような感じで
    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   device ramdisk=[boot]\sources\mype64.wim,{ramdiskoptions}

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   path \windows\system32\boot\winload.exe

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   osdevice ramdisk=[boot]\sources\mype64.wim,{ramdiskoptions}

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   systemroot \windows

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   winpe yes

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   detecthal yes

  4. 作成したエントリをブートメニューに追加する(★3)
    末尾に追加する場合基本は次
    >bcdedit /store BCDストア /displayorder {GUID} /addlast
    一行で

    実際には次のような感じで
    >bcdedit /store g:\boot\bcd /displayorder {12345678-abcd-1234-abcd-123456789abc}   /addlast

  5. 3つめ、4つめの wimイメージを追加する際には、★1から★3を適切に設定しながら繰り返す
    メニューのタイムアウトやらデフォルトのブート設定やら細かな設定も合わせて行う。。。

 

WindowsRE な wimイメージを作成(抽出)して追加

msdn blog の ここ から。
WindowsVista インストールメディア の boot.wim のボリューム2 に WindowsRE が含まれているので WinPE-SRT-Package に代えて利用。

【2008/02/05 追記】
Vista SP1 版の WAIK のヘルプに上記に相当する内容が追加されている

Windows PE ユーザーズ ガイド

Windows PE をカスタマイズする
⇒ Windows PE のチュートリアル
⇒ チュートリアル : Windows RE イメージを作成する

イメージの展開場所は d:\winpe\winre64 とし、Vista のインストール DVD は e:\ にあるとする。
以上をふまえてざっくり

  1. boot.wim を展開
    >imagex /apply e:\source\boot.wim 2 d:\winpe\winre64

  2. 設定ファイル winpeshl.ini を作成し system32 へ保存。
    winpeshl.ini

    今回の場合 d:\winpe\winre64\Windows\system32\winpeshl.ini に

  3. イメージを固める、次のような感じで
    >imagex /boot /capture winre64 winre.wim "WindowsRE x64"
    上を一行で

  4. UFD にwimイメージをコピーし、BCDストアを編集 ざっくり以下のような感じ
    >bcdedit /store BCDストア /create /d "WindowsRE x64" /application OSLOADER
    エントリ {GUID} は正常に作成されました。

    >bcdedit /store BCDストア /set {GUID} device ramdisk=[boot]\sources\winre.wim,{ramdiskoptions}

    >bcdedit /store BCDストア /set {GUID} path \windows\system32\boot\winload.exe

    >bcdedit /store BCDストア /set {GUID} osdevice ramdisk=[boot]\sources\winre.wim,{ramdiskoptions}

    >bcdedit /store BCDストア /set {GUID} systemroot \windows

    >bcdedit /store BCDストア /set {GUID} winpe yes

    >bcdedit /store BCDストア /set {GUID} detecthal yes

    >bcdedit /store BCDストア /displayorder {GUID} /addlast
    状況に応じて読み替えつつそれぞれ一行で

DOSの追加

ついでにDOSブートも仲間入り。
DOSのブートセクタファイルを dos.bss とした場合、 ざっくり以下のような感じで

>bcdedit /store e:\boot\bcd /create /d "DOS boot - Windows98SE -" /application BOOTSECTOR
エントリ {GUID} は正常に作成されました。

>bcdedit /store e:\boot\bcd /set {GUID} device boot
>bcdedit /store e:\boot\bcd /set {GUID} path \dos.bss
>bcdedit /store e:\boot\bcd /displayorder {GUID} /addlast

それぞれ一行で

DOSのブートセクタ採取は WinPE2.0 & DOS 2in1 ブータブルUSBメモリ の手順で。

 

現時点(2007年11月25日 21:42:22) でその他雑感

この使い方で WindowsRE と呼んで良いのか疑問はのこるものの、iamgex でパーティションサイズを変えつつ復元するときには、役に立つ場合があるのは事実。

プロンプトのバッファサイズの変更は起動後に逐一変える手間が省けるので地味に役立つ。

それと Beta の時には WAIK で提供していたのだから WinPE-SRT-Package を WAIK から削るな、と言っておきたい。

GUI な VistaBootPROEasyBCD も UFD のBCDストアに対しては編集できなかったのは計算外...
そのうち編集できるようになって欲しい。。。

時間対効果を考えると BartPE 、 VistaPE に比べてどれだけのアドバンテージが。。。

【補足&訂正&お詫び】

  • 2007/12/19
    >bcdedit /store BCDストア /set {ramdiskoptions} ramdisksdidevice partition=Drive
    の実例を間違えていたので訂正

    誤)
    >bcdedit /store g:\boot\bcd /set {ramdiskoptions} ramdisksdidevice partition boot
    正)
    >bcdedit /store g:\boot\bcd /set {ramdiskoptions} ramdisksdidevice boot

    今日(2007/12/19)、GUID 入力(コピペ)が面倒でバッチファイル作成していて気がついた。。。
  • 2008/02/09
    ひとつ上で言及しているバッチファイルはこちらでリンクと注記も本文に追加
  • 2008/02/09
    プロンプトの画面バッファが上手く機能していなかったことに気がついたのでレジストリを強制的に上書きするように startnet.cmd に追加 (出来たような記憶もあるんだけど???)

 

|

« Vista エピソード その3 | トップページ | しばしば落ちるW51H »

コメント

この記事を元にvistaPEとWinPEとWinREのトリプルブートのUSBメモリを作成し、
とても参考になりました。

投稿: michael | 2008年11月28日 (金) 17時55分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: WinPE2.0 (WindowsAIK で マルチwimイメージ & DOSブート なUSBメモリ作成):

« Vista エピソード その3 | トップページ | しばしば落ちるW51H »