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 としたり。
参考にしたサイトなど
- ブート構成データ エディタについてよく寄せられる質問
bcdedit.exe について - WAIK のオンラインヘルプ、bcdedit.exe /? のコマンドのヘルプ
- WinRE と WinRE のインストールに関して msdn blog【2008/02/05 追記】
Windows Vista SP1 および Windows Server 2008 用の自動インストール キット (AIK) のヘルプ - google でレジストリ関連
調達 & 準備物
- Windows AIK
ダウンロードセンターの (旧版) Windows 自動インストール キット (AIK) から入手。【2008/02/05:追記】
(新版) Windows Vista SP1 および Windows Server 2008 用の自動インストール キット (AIK)- 32bit XP SP2 なら KB926044 もゲットしておく (レジストリをいじるなら特に)
http://support.microsoft.com/kb/926044
この中のリンク先
http://go.microsoft.com/?linkid=6294451
からゲットする。
入手は8時間以内だそうで、午前中に出しておけば夕方にはゲットできそう (できた)
- 32bit XP SP2 なら KB926044 もゲットしておく (レジストリをいじるなら特に)
- UFD
USBメモリ
150MB 前後の wimイメージ を切り替えることになるので最低でも 512MB
eSATA HDD なら大きくて速くて幸せかも
- Windows Vista インストールメディア
WindowsRE を試すなら必要
以下、あると便利
- Windows Vista
WindowsPE2.0 な環境で代替可能ではあるものの Vista があった方が楽。
手持ちが Vista Business 64bit 版 しか無いので微妙に不便。
- VirtualPC 等の仮想環境
このへん VirtualPC というか VirtualPC 2007 日本語版 からゲット。
x64 な WinPE2.0 環境も試すには VMware とか。
直接 UFD を編集する事も多いのであまり使わないかも。
- 既存のWinPE2.0
元があれば一から作るよりは早いので
WinPE2.0 としてのブータブルUSBメモリ作成
まず、WAIK のインストールと WinPE2.0 のブータブルUFD を作成。
WAIK のインストール
- ダウンロードセンターからダウンロードしてきた *.img ファイルを DAEMON Tools でマウント (CDに焼くのは面倒なので)
- readme.rtf は事前によく読む
ドキュメントは多少アップデートされている⇒ダウンロードセンター US - 32bit XP SP2 なら必要に応じてWAIK の CD にある HOTFIX\WINDOWSXP-KB914882-X86-JPN を適用 & 再起動
KB926044 も。 - WAIK をインストール
WAIK の CD の Autorun に任せたり STARTCD.EXE を実行したりして、必要に応じて .NET framework2.0 と MSXML6.0 Purser を入れながらセットアップ - ヘルプの
[Windows AIK] → [Documentation] → [Windows PE ユーザーズ ガイド]
から- 「Windows PE をカスタマイズする」
→ 「Windows PE イメージを構築する」と
- Windows PE をカスタマイズする
→ Windows PE のチュートリアル
→ チュートリアル : 起動可能な Windows PE RAM ディスクを UFD に作成する
は少なくとも目を通してから作業開始 - 「Windows PE をカスタマイズする」
作業場所は d:\winpe\x86 にしたいので、予め d:\winpe を作成しておく
- 「 Windows PE Tools コマンド プロンプト 」を実行
- 必要ファイルをコピーする為に以下のように実行 (x86 の場合)
>copype x86 d:\winpe\x86
- コピーが完了したら
>imagex /apply winpe.wim 1 mountのように基本的な作業環境を展開
カレントディレクトリと作業ディレクトリが一致していなければパスはフルパス指定する
>imagex /apply D:\winpe\x86\winpe.wim 1 D:\winpe\x86\mountのようにする(上を一行で)
ここからカレントディレクトリが d:\winpe\x86 である事を前提にして相対パスでの場合のコマンド例
- パッケージの確認
>peimg /list mount日本語版 Windows AIK では日本語環境がインストール済みなのが分かる
- パッケージの追加
>peimg /install=WinPE-Scripting-Package mountな感じで順次追加
英語版 Windows AIK で日本語言語パックと日本語WMIパッケージをインストールするには、各パッケージをインポートしてからインストール>peimg /import=e:\WINPE_LANGPACKS\X86\JA-JP\LP.CAB mountWAIKの言語パックを利用する場合、 e: がWAIKのインストールCDの時は上のような感じで(それぞれ一行で)
>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
- 必要なパッケージの追加が完了したら再確認
>peimg /list mount
- パッケージ追加作業の確認が済んだら固める準備
>peimg /prep mountを実行
- ドライバの追加
>peimg /inf=..\drv\sata_ahciVista32\nvstor32.inf mountな感じで必要に応じて順次追加 (上を一行で)
d:\winpe\drv\sata_ahciVista32 に置いたahci ドライバを相対パス指定で追加している例。
- WinPE2.0環境を起動直後から101キーボード配列で利用する時には以下も実行
>peimg /lang=ja-JP /layerdriver=1 mount106キーボード配列に戻したい時は /layerdriver=6 で再実行
日本語IME (IME10)を利用したい時には Microsoft KB926181 を参照
- boot.wim 再作成
>imagex /boot /capture mount ISO\sources\boot.wim "MyPE"上を一行で
- 確認用 isoイメージ の作成
>oscdimg -n -betfsboot.com ISO MyPE.iso
相対パスだと分かりにくさ倍増なので絶対パスでの記述も参考までに>oscdimg -n -bD:\winpe\x86\etfsboot.com D:\winpe\x86\ISO D:\winpe\x86\MyPE.iso上を一行で
- 動作確認
VirtualPC や VMWare で生成した ISOイメージ をマウントして起動
おかしな事になっていなければWinPE2.0のイメージが完成
作成した ISOイメージ は DVD(もしくはCD) に焼いておくと何かの時に便利
- 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 の確認はその都度しておいた方が無難
- 作成している WinPE2.0 イメージである ISO 配下のファイルとフォルダを全て UFD にコピーする
ここまでの手順の流れなら d:\winpe\x86\ISO の下にあるファイルとフォルダ
- USB Flash Device からのブート順位を適切に設定した PC で WinPE2.0 が起動可能か確認する
マルチブート用 wimイメージ の準備
せっかくなので x64 なイメージを少しカスタマイズしつつ作成してみる
- 「 Windows PE Tools コマンド プロンプト 」を実行
- 必要ファイルをコピーする為に以下のように実行 (x64 の場合)
>copype amd64 d:\winpe\x64
- x86 も x64 も 1. から 10. までのステップは基本的に同じなので省略
ドライバの追加は x64(amd64) 用になるので注意
- レジストリのカスタマイズ
これが目標の一つ
『 CapsLock と 左Ctrl を入れ替える 』 と 『 プロンプトのバッファサイズを増やす 』
のサンプル- レジストリエディタを起動する
- HKEY_LOCAL_MACHINE を選択 (ハイブの読み込み可能位置で適当に)
- ファイル ⇒ ハイブの読み込み で
d:\winpe\x64\mount\Windows\System32\config
の
SYSTEM
を指定して名前を pesystem とする (名前が重複しないように任意) - 同様に
ファイル ⇒ ハイブの読み込み で
d:\winpe\x64\mount\Windows\System32\config
の
DEFAULT
を指定して名前を peuser とする (名前が重複しないように任意) - 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
- プロンプトのバッファサイズを増やす
画面バッファとコマンドのヒストリを増やしたいので次の変更
[HKEY_LOCAL_MACHINE\peuser\Console] までたどる
新規の dword値 で以下になるように追加
"ScreenBufferSize"=dword:270f0050
"HistoryBufferSize"=dword:00000064
"NumberOfHistoryBuffers"=dword:00000008
- レジストリの編集作業が完了したら読み込んだハイブ
[HKEY_LOCAL_MACHINE\pesystem]
[HKEY_LOCAL_MACHINE\peuser]
を選択してそれぞれ
ファイル ⇒ ハイブのアンロード
でアンロードを必ず実行する
- 起動直後にプロンプトのウィンドウを3つとメモ帳を開きたいので startnet.cmd をちょこっと編集
オリジナルは d:\winpe\x64\mount\Windows\System32\startnet.cmd
と、極めてシンプルなバッチファイル
プロンプトの画面バッファの値を強制的に上書きとプロンプトのウィンドウとメモ帳を出したいので次のように
何か追加したいときや別のバッチを呼びたい時はこのファイル startnet.cmd を適宜編集
- boot.wim 再作成
>imagex /boot /capture mount ISO\sources\boot.wim "MyPE x64"上を一行で
- 仕上がり具合を 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 などを利用。
準備
- UFD を取り付けドライブレターを確認
以降ここでは G: とする
念のために BCDストア のある g:\boot をコピーしておくと吉 - 追加したい wim を適当な名前に変えて UFD にコピーする
- まず boot.wim を mype64.wim にリネーム
- 続いてmype64.wim を g:\source へコピー
- プロンプトの準備
必須ではないけれど、変更していないと不便なので。- プロンプトの「規定値」もしくは「プロパティ」を選択
- オプションで
- バッファサイズ を 100 に
- バッファ数 を 8 に
- 簡易編集モード にチェックが入っていなければ チェック
- レイアウトで
- 画面バッファのサイズの高さを 9999 に
- プロンプトを短くするために
>prompt $g
【2008/02/09:追記】
BCDストア編集作業を多少楽にするバッチファイルはこちら
- 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
- 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} は正常に作成されました。
- 生成された 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
- 作成したエントリをブートメニューに追加する(★3)
末尾に追加する場合基本は次
>bcdedit /store BCDストア /displayorder {GUID} /addlast一行で
実際には次のような感じで
>bcdedit /store g:\boot\bcd /displayorder {12345678-abcd-1234-abcd-123456789abc} /addlast
- 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:\ にあるとする。
以上をふまえてざっくり
- boot.wim を展開
>imagex /apply e:\source\boot.wim 2 d:\winpe\winre64
- 設定ファイル winpeshl.ini を作成し system32 へ保存。
winpeshl.ini
今回の場合 d:\winpe\winre64\Windows\system32\winpeshl.ini に
- イメージを固める、次のような感じで
>imagex /boot /capture winre64 winre.wim "WindowsRE x64"上を一行で
- UFD にwimイメージをコピーし、BCDストアを編集【2008/02/09:追記】ざっくり以下のような感じ
この作業を多少楽にするバッチファイルはこちら
>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 とした場合、 ざっくり以下のような感じで
エントリ {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 な VistaBootPRO も EasyBCD も 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 に追加 (出来たような記憶もあるんだけど???)
| 固定リンク
この記事へのコメントは終了しました。
コメント
この記事を元にvistaPEとWinPEとWinREのトリプルブートのUSBメモリを作成し、
とても参考になりました。
投稿: michael | 2008年11月28日 (金) 17時55分