WinPE 3.x

2011年7月29日 (金)

WindowsPE での解像度変更

「WindowsPE 解像度」でググッて1ページ目に見当たらなかった(2011/07/26)ような気がするので今更感が溢れつつもメモ。
2年ぐらい前に調べた時のメモを元に書き起こしたので今は昔かも。

このページのPC用ページへGo! (モバイル用ページに辿り着いてしまった時用)

WindowsPE で解像度を変更する方法とりあえず4種類

  1. wpeinit.exe での初期化で変更 (32/64bit)
    WindowsPE環境初期化での解像度指定
    追加で入手すべきアプリケーション無し、ただし設定ファイルは新規作成
  2. 「 setres.exe 」 を使う (32bit)
    http://www.iansharpe.com/setres.php
    フリー
  3. 「 Display Changer 」を使う (32/64bit)
    http://12noon.com/
    個人利用、教育利用はfree、業務利用は US$499 (2011/07/26現在)
  4. 「 SetResolution.exe / SetResolution-x64.exe 」を使う (32/64bit)
    一次配布サイト、出所忘却、ローカルにあるファイルのタイムスタンプと朧気な記憶的には Windows7 beta2 の頃に拾ったもの

2.、3.、4. はそれぞれのアプリを WindowsPE 上でコマンドラインなりバッチなりから適当に実行してやれば良いだけなので入手リンク以外特にメモ無し。

よってここは『非Microsoft無し』かつ『とりあえず解像度を変えられれば良い』1.に関してのメモ。

wpeinit で解像度変更

基本は

>wpeinit -unattend=<設定を記述したxml>

となるので、少し楽をするためにこの一行分のコマンドを記述したバッチファイルと設定のxmlファイルのセットを用意。


というわけで WUXGA(1920x1200) の場合の例
wuxga.cmdwuxga.xml を作成

wuxga.cmd
wuxga.xml

※ 32bit/64bit (X86/AMD64) 共用のファイルにして使いまわしたいのでこの内容

これらのファイルをセットで WindowsPE の system32 などパスの通った適当な場所に保存。
同様に HorizontalResolution、VerticalResolution などを変更しつつ、デフォルト解像度に戻す用に svga.cmdsvga.xml 、他にも使いそうな解像度の設定を適当に作成。

以上の準備が済んでいる WindowsPE が起動したら、作成したファイルに応じてプロンプトから

>wuxga

などとしてやれば可能なら解像度が変更されるはず。
wpeinit.exe による初期化(ネットワークなども)が実行されるので瞬時の変更完了とはならない点に一応留意。

この方法での注意点は、wpeinit.exe を実行するということでその他の設定も含めて初期化されてしまい、変更をしている場合その辺の調整が必要な事、解像度の変更に失敗しても何も起きない事、など。初期化の様子は wpeinit.log が生成されているはずなので必要に応じ中を見てチェック。

wpeinit.log の例

 

低解像度のPC、ネットブックなどがなくて WindowsPE 利用時共通の最低解像度として例えば SXGA(1280x1024) が担保される状況なら、設定を記述した sxga.xmlsystem32 に保存したうえで Startnet.cmd

Startnet.cmd

のようにしておくと便利かも。

雑感

64bit環境を含めて色々便利に使うならおそらく「Display Changer」一択、WinPE だけでなく通常のWindows上(XP/7)でも便利。
「 Display Changer 」は 『dc.exe -max』で簡単に最大解像度に変更できるからといって、VMWare Player の中で実行中の WinPE で安易に『 -max 』指定すると『ごめんなさい、舐めてました』と謝る事になったのは良い思い出。
一方、当時の VirtualBox では大したことは無かった。

【2011/11/05:追記】
リンクの修正、タイポの訂正

【2012/02/23:追記】
リンク先の構成変更にともない Display Changer のページへのリンクをやめ、サイトトップへリンクの変更

【2012/05/01:追記】
なぜか自動生成されているモバイルページの方がググられやすい状況が発生してる為、PC用ページへのリンクを追加
「WinPE 解像度」「WindowsPE 解像度」と「Win PE 解像度」「Windows PE 解像度」 でググった結果が違う対策

| | コメント (0)

2009年8月 8日 (土)

WinPE 3.0 ( Windows AIK for Windows 7 )

Windows 7 の 製品版(RTM) に合わせて Windows Preinstallation Environment 3.0 こと WindowsPE3.0 、さらに縮めて WinPE3.0 の正式版が利用可能になったので、とりあえずメモ。
Windows Automated Installation Kit for Windows 7 こと Windows AIK for Windows 7 に含まれているのが WinPE3.0 。

個人的には最近めっきり使う機会が減ったものの、新しい事は良い事だ、という事で。
Windows 7 世代になったおかげで対応するデバイスが増えて、nVidia の AHCI 等の WindowsPE 2.0 ではドライバーが別途必要だったものが特に追加しなくてもよくなっていたり使えるものが増えている点では便利。

なお、微妙に長いので WindowsPE3.0 を WinPE3.0 もしくは単に WinPE、Windows Automated Installation Kit for Windows 7 を WindowsAIK もしくは WAIK、と略す。
また、この記事では特に断り無くバージョンが書いていない場合、WindowsPE2.0/2.1 は含まず、基本的に全て WinPE3.0 のことを指す。さらに、日本語版 WindowsAIK 、日本語版 WindowsPE を前提にしているのでご承知おきを。
 

準備調達物

  1. Windows AIK
    入手は ダウンロードセンターから
    Windows 7 用の Windows 自動インストール キット (AIK) / 英語版
    【2011/02/18:追記】
    先日の Windows7 SP1 提供開始(MSDNなど)に時期を同じくして、もともと WAIK のダウンロードだったものがWAIKフルセットではないサプリメント? (waik_supplement_ja-jp.iso)に置き換わってしまっています。
    【2011/02/19:追記】
    本日の 『Windows7 SP1 統合日本語版』など提供開始(MSDNなど)に時期を前後して、今度はサプリメント?の方がダウンロードセンターから消えて、元々のこれまでのWAIKフルセットがリンク先に復活。
    状況からしてしばらくすれば WindowsPE3.1 の方も復活すると思われるものの、リンクを確認したついでに 2011/02/19 20:18 現在の直リン。 リンク先が消失あるいは変更されても今後このリンクは更新しません。
    将来的に変更される可能性があるので、ダウンロードセンターから検索してダウンロードすることを強くおすすめします。
    • 日本語版の WAIK(約1.6GB) の isoイメージ には英語版のドキュメントも入っているので、ドキュメントのためだけに英語版(約1.7GB)を落とす必要はない
    • OSのサポート自体が基本的に終わっている WindowsXP はサポート環境から外れている
    • WindowsXP(32bit/64bit) で WAIK のインストールがインストーラに蹴られる事はない、が動作が色々おかしい
    • WAIK の isoイメージの Hotfix フォルダには WindowsXP の KB914882 が入っていたりするのは抜き忘れなのか Microsoft の親心なのか
  2. 仮想マシン環境
    必須ではないものの仮想マシン環境があれば、32bit/64bit をそれぞれ試す場合には何かと便利、というより無いとやっていられない 何でも良いので好みに応じて適当に
  3. isoイメージを扱える仮想ドライブもしくはアーカイバなど
    isoイメージ(1.7GB程度)で提供されている WAIK をいちいち DVD に焼くのは面倒
    • iso をマウントできる DAEMON Tools などの仮想ドライブ
    • isoイメージを解凍できる 7-zip などのアーカイバ
    など好みに応じて適当に
    7-zip は isoイメージ だけでなく、wimイメージ も解凍可能(中身の確認可能)なので入れておくと便利
  4. ブートさせるもの
    WindowsPE をブートさせたいもの、環境を準備
    • ブータブルCD/DVD を作成するなら isoイメージを焼くためのライティングソフトとブランクメディア
    • ブータブルUSBメモリ を作成するなら、中身を消しても構わない USBメモリ
    • PXEブートさせるなら、PXEブート環境
    など
    最近の傾向ならブータブルUSBメモリ作成が主流かと思われる
  5. Windows 7
    WinPE3.0 に IME を追加するなら Windows 7 が正当

ここでは、ブータブルUSBメモリの作成手順を一通り行う。
 

 

インストール準備

WindowsPE3.0 の Beta版、RC版、もしくは WindowsPE2.1や WindowsPE2.0 など別のバージョンの何かをインストールしていたらまずアンインストール。

  1. 以前のバージョンのアンインストール
    普通に「プログラムの追加と削除」で
  2. 再起動要求で再起動

再起動がかかるので、うっかり 「はい」 でなにかを保存し忘れないように注意するぐらい。

Windows AIK のインストールとドキュメント

  1. とりあえず WAIK の isoイメージの readme.htm と Docs\Whitepapers の stepbystep_itpro.htm を読む
  2. Docs\CHMs フォルダに ヘルプファイルがあるので、事前に WinPE.chm 、WinAIK.chm あたりも目を通しておく事もおすすめ
    English に英語ドキュメントが用意されているので、何処か適当な場所にコピーしておくと便利かも
  3. 必要に応じてシステム要件を満たすように入れるべきものを入れる
    (諸々承知の上で XP SP2 にてレジストリハイブを触るなら こちら も)
  4. WAIK をインストール
    StartCD.exe を実行してダイアログに従ってインストール
  5. コマンドプロンプトの調整
    作業の効率化のための設定変更をするべく [スタート]→[すべてのプログラム] → [Microsoft Windows AIK] の「 Deployment ツールのコマンド プロンプト 」のプロパティを開く
    1. 『ショートカット』の『詳細設定』を選択
      1. 『管理者として実行』にチェック
    2. 『オプション』を選択
      1. 編集オプションの『簡易編集モード』にチェック
      2. コマンドの履歴の『バッファーサイズ』を『200』、『バッファー数』を『20』程度に増やす、『重複する古い履歴を破棄』にチェック
      『簡易編集モード』にするとプロンプト内でのマウスのドラッグで選択が直ちに可能になり、選択時右クリックでコピー、非選択時にペーストができるようになる
      この動作が不要ならチェックしない
    3. 『レイアウト』を選択
      1. 画面バッファーのサイズの『高さ』を最大の『9999』に
      2. ウィンドウのサイズの『幅』を『100』程度に(画面バッファーのサイズの『幅』も連動するので適当に合わせる)
      3. ウィンドウのサイズの『高さ』を『35』程度に
      ここでのウィンドウサイズの幅と高さは広くすると結構邪魔にもなるので好みで
    4. 『適用』→『OK』でプロパティダイアログを閉じる
    5. UAC のダイアログが出たら素直に『続行』

WAIK のダウンロード前にオンラインで readme を読むなら、TechNetで 日本語:Beta版 / 英語:正式版 (2009/08/07現在)。

インストール後に、 WinPE.chm は [Windows PE ユーザーズ ガイド]、WinAIK.chm は [Windows 自動インストール キット ユーザーズ ガイド] としてメニューに出てくる。これらのドキュメントの内容は何の前触れもなく互いに言及している事があり [Windows PE ユーザーズ ガイド] だけを読んでいても話が見えてこない場合があるので注意。

なお日本語ドキュメントが WinPE2.0 のころからいい加減な出来なのは相変わらず。最初に読ませるべきであろうドキュメントからしておかしい。WAIK インストール後なら 「ステップ バイ ステップ ガイド - IT プロ用 Windows の基本展開」 としてスタートメニューに追加される、
Docs/Whitepapers/stepbystep_itpro.htm
は 2行目あたりに見える <b> で、ドキュメントのやる気、本気の程度が知れるというより、もはや”ツッコミ期待でリリースしたとしか思えない”ので、めげない様に。普段ならスルーできる『CD-R や DVD-R じゃなく「空の CD-ROM / blank CD-ROM」 なんて貴重なものが何処で手にはいるのか』とか・・・、ささくれ立った気持ちにならないよう寛容な心で読んでいく。
 

WinPE3.0 のイメージ作成の前に

インストールすると [スタート]→[すべてのプログラム] → [Microsoft Windows AIK] ができているはず。
WinPE の基本的な作成手順は [Microsoft Windows AIK] → [Documentation] → [Windows PE ユーザーズ ガイド] の

「Windows PE をカスタマイズする」
 → 「Windows PE のチュートリアル」

に幾つかのパターンで説明されているのでどれか一つ合致するものをやってみることをおすすめ。
ドライバーの追加や IME の追加などのカスタマイズに関しては [Windows PE ユーザーズ ガイド] の

「Windows PE をカスタマイズする」
→ 「Windows PE のカスタマイズ方法に関するトピック」

に情報のとっかかりがあるので適当に目を通しておく。
IME の追加に関しては有る事を把握する程度で軽く適当に読む(2009/08/08 現在) ★後述★

ここからは、 x86版 WinPE をブータブルUSBメモリで作成する場合の作業の簡単な流れ。
内容的には 「 チュートリアル: 起動可能な Windows PE RAM ディスクを UFD に作成する 」に適当なカスタマイズを追加した程度。
ビルド環境作成場所は d:\winpe\pe30x86 にする。

 
ここからのコマンドは基本的に全て一行で入力。
 

WinPE3.0 のイメージ作成

  1. [スタート] → [Microsoft Windows AIK] の 「 Deployment ツールのコマンド プロンプト 」を実行
  2. 必要ファイルをコピーする
    >copype <アーキテクチャ> <コピー先>
    となる。 x86版を d:\winpe\pe30x86 にコピーしたいので次のように。
    >copype x86 d:\winpe\pe30x86
    作成場所に既存のフォルダがある場合エラーになるので注意。
    上位ディレクトリとなる d:\winpe は無くても自動的に作成されるので事前に作っておく必要はない。
    このコピー後、プロンプトのカレントディレクトリがコピー先(ここでは d:\winpe\pe30x86 )になっている事には留意。
     
  3. WinPE ビルド環境のコピーが完了したら、基本イメージ (winpe.wim) を boot.wim に名前を変えてコピー
    >copy winpe.wim boot.wim
    作業性を考えてなるべく浅い階層(カレントディレクトリ)にコピーし、後で d:\winpe\pe30x86\ISO\sources へコピーしなおす。
     
  4. wimファイルを読み書き可能でマウント
    >dism /Mount-Wim /WimFile:<wimへのパス> /Index:<番号> /MountDir:<マウント場所>
    となる。boot.wim を D:\winpe\pe30x86\mount に読み書き可能な状態でマウントしたいので
    >dism /mount-wim /wimfile:d:\winpe\pe30x86\boot.wim /index:1 /mountdir:d:\winpe\pe30x86\mount
    とする。
    相対パスでも動作し、相対パスにすると次のようにのようにスッキリして入力も楽。
    >dism /mount-wim /wimfile:boot.wim /index:1 /mountdir:mount
    ただしこの記事では、相対パスだと何をしているのか分からなくなりがちなので、読みにくくなるを承知の上で以降は絶対パスで表記する。

    imagex で書き込み可能でマウントする場合は次

    >imagex /mountrw d:\winpe\pe30x86\boot.wim 1 d:\winpe\pe30x86\mount

    boot.wim の index 1 を mount へマウントした例。

     
     
  5. パッケージの内容を確認してみる
    >dism /Image:<マウント場所> /Get-Packages
    なので
    >dism /image:d:\winpe\pe30x86\mount /get-packages
    として確認。
     
  6. 練習を兼ねてパッケージの追加をしてみる
    >dism /Image:<マウント場所> /Add-Package /PackagePath:<パッケージへのパス>
    が基本で、言語に非依存パッケージ⇒言語依存パッケージ とペアで追加するので、 WinPE-Scripting パッケージ追加の場合
    >dism /image:d:\winpe\pe30x86\mount /add-package /packagepath:"C:\Program Files\Windows AIK\Tools\PETools\x86\WinPE_FPs\winpe-scripting.cab"


    >dism /image:d:\winpe\pe30x86\mount /add-package /packagepath:"C:\Program Files\Windows AIK\Tools\PETools\x86\WinPE_FPs\ja-jp\winpe-scripting_ja-jp.cab"
    のようにして追加。
    全ての追加が完了したら /Get-Packages で内容も再確認
     
  7. 練習を兼ねてドライバーの追加(削除)をしてみる
    少々余分なものが追加されても構わない、余分が追加されるおそれが無い場合はフォルダ指定の方が楽
    >dism /Image:<マウント場所> /Add-Driver /Driver:<.infのあるフォルダ>
    とすれば良いので、nVidia の nforce の AHCI ドライバーを追加してみる。ドライバーは d:\winpe\pe30x86\sata_ide に用意して次のようにする。
    >dism /image:d:\winpe\pe30x86\mount /add-driver /driver:d:\winpe\pe30x86\sata_ide

    一つずつ追加するよりドライバーをまとめたフォルダを用意して /Recurse オプションでサブフォルダごと追加させるとさらに楽
    d:\winpe\pe30x86\drivers\sata_ide と d:\winpe\pe30x86\drivers\Ethernet のように用意した時
    >dism /image:d:\winpe\pe30x86\mount /add-driver /driver:d:\winpe\pe30x86\drivers /recurse
    とすると、drivers 配下の sata_ide と Ethernet が追加される。


    追加したドライバー(サードパーティのドライバー)の確認は
    >dism /Image:<マウント場所> /Get-Drivers
    とすれば良いので
    >dism /image:d:\winpe\pe30x86\mount /get-drivers
    のように確認。


    追加したドライバーを削除する時は追加後の infファイル名 「例: oem0.inf 」が必要になるので /Get-Drivers で「公開名」と「元のファイル名」を確認してから削除
    >dism /Image:<マウント場所> /Get-Drivers
    (メッセージ省略:ここで公開名を確認)

    >dism /Image:<マウント場所> /Remove-Driver /Driver:<inf公開名>
    (メッセージ省略)
    とすれば良いので
    >dism /image:d:\winpe\pe30x86\mount /get-drivers
    (メッセージ省略:ここで公開名を確認 "oem0.inf" )

    >dism /image:d:\winpe\pe30x86\mount /remove-driver /Driver:oem0.inf
    のように削除。

    全ての追加(削除)が完了したら /Get-Drivers で再確認。
     
  8. WinPE 起動時の RAMディスク のスクラッチサイズ(RAMディスクの自由に使える空きのサイズ)を変更してみる
    増やしても使いきる事はまず無いし、余計に確保することでメモリを圧迫するのも事実だし、HDD/SSD や USBメモリに書き込めば済む話でもあるのでHW構成と実運用面と相談しながら変更、などと慎重な事は言わず、ドーンと上限まで割り当ててみる。
    >dism /Image:<マウント場所> /Set-ScratchSpace:<size>
    であり、size には 32,64,128,256,512 が割り当て可能。上限の 512MB は
    >dism /image:d:\winpe\pe30x86\mount /set-scratchspace:512
    のように指定。

    スクラッチサイズを大きくすると、仮想マシンで実行する時には途端に鬱陶しい事にもなるので注意。
     
  9. よく使うユーティリティ、アプリケーションを追加する

    d:\winpe\pe30x86\mount\apps\editor のように mount したフォルダ内に直接置く。

    追加したファイルサイズ分だけ起動に時間がかかるようにもなるので、大きなもの、使用頻度の低いものなどはUSBメモリ上から実行するなど、適宜使い分ける。

    何も追加しないのも寂しいので、timeout.exe、choice.exe などを d:\winpe\pe30x86\mount\widows\system32 へコピーしてみる。

    (アクセス権云々やアンマウント時の事を考慮すると、プロンプトで copy や xcopy を使ってコピーした方が良いかも)
     
  10. 日本語 IME を追加
    必要な状況は少ないものの、WinPE で起動した後そのPCでメモって保存する時に日本語で打ち込めると楽。
    必要に応じて追加。

    手順をヘルプの記述まま鵜呑みにするとハマるので要注意。 【2009/08/08 現在】

    [Windows PE ユーザーズ ガイド]の
    → Windows PE をカスタマイズする
     → Windows PE のカスタマイズ方法に関するトピック
      → Input Method Editor (IME) を Windows PE に追加する

    にある日本語IME用のバッチファイルのには有るべき改行がいくつも抜けているので、そのままコピー&ペーストで作成すると確実に失敗する。

    修正すると最終的には WinPE2.0/2.1 の時と同じバッチファイルとなるので、チマチマ修正するより

    KB926181 : Windows PE 2.0 に Input Method Editor (IME) サポートを追加する方法

    にあるサンプルをコピー&ペーストしてバッチファイルを編集作成する方が早い。

    【補足】
    64bit の OS 上で 32bit版 WinPE を作成し IME を追加する場合には バッチファイル内の
    「%IMEBinSrc%\System32」

    「%IMEBinSrc%\SysWOW64」
    に全て置換

  11. キーボードレイアウトを変更する 【通常は必要ない作業】
    WinPE 起動直後から英語キーボード配列にしたい時に
    >dism /Image:<マウント場所> /Set-LayeredDriver:<番号>
    上記のようにレイアウトは番号で指定し 「101キーボードは 1 」、「106/109キーボードは 6 」。101配列に変更する時は
    >dism /image:d:\winpe\pe30x86\mount /set-layereddriver:1
    のようにする。106/109配列に戻す時は 6 を指定。

    キーボードの設定を含む言語設定全般を確認するには
    >dism /Image:<マウント場所> /Get-Intl
    なので
    >dism /image:d:\winpe\pe30x86\mount /get-intl
    のように確認する。

    【余談】
    101配列のPCしかない、106配列キーボードをストレス無く101配列として使える、むしろ106配列だと困る、などの比較的レア?な場合には101配列への変更が効果的。
    WinPE 起動後に wpeutil コマンドでキーボード配列を変更する場合、日本語 WinPE なら 106⇒101 はコピペで済んで簡単だけれど、101⇒106 は(準備しなければ)面倒なので、これを考慮すると日本語106配列のままの方が汎用性を考えれば無難といえば無難。

     
  12. 変更を保存する
    変更を保存してマウントを解除するには次のように /Commit
    >dism /Unmount-Wim /MountDir:<マウント場所> /Commit
    実際には下記。
    >dism /Unmount-Wim /MountDir:d:\winpe\pe30x86\mount /Commit
    変更を保存せずに破棄して終了する時には /Commit に代えて /Discard
     

    imagex でマウントした場合に保存してアンマウントする時は次。

    >imagex /unmount /commit d:\winpe\pe30x86\mount

    mount へ加えた変更を 保存 /commit した例。保存したくない時は /commit を付加せずに実行。

     
  13. アンマウントが完了したら boot.wim を d:\winpe\pe30x86\ISO\sources にコピーする

    何かおかしなマウント(アンマウント)状態になったら
    >dism /Cleanup-Wim
    してみるのも一つの手。
     

 

WinPE3.0 のイメージの動作確認 (仮想マシンにて)

一旦 isoイメージを作成して仮想マシンで動作確認をする。
既存のブータブルUSBメモリのwim差し替え、PXEブートでwim差し替えだけで完結、などの場合を除いて仮想マシンで一応動作チェック。
仮想マシンで動作確認をせずに、直接ブータブルUSBメモリを作成する場合はスキップ。

  1. isoイメージファイルの作成
    基本的には次のコマンドで作成可能。
    >oscdimg -n -b<etfsboot.comへのパス> <ISOのターゲットフォルダ> <ISOファイルへのパス>

    実際には次のように作成
    >oscdimg -n -bd:\winpe\pe30x86\etfsboot.com d:\winpe\pe30x86\ISO d:\winpe\pe30x86\pe30x86.iso
     
  2. 適切な設定をした仮想マシンで、作成した WinPE3.0 の isoイメージをマウントして動作確認
     

問題なければ引き続きブータブルUSBメモリの作成に。
 

WinPE3.0 のブータブルUSBメモリ作成

中身が消えても構わない USBメモリを用意してPCに取り付け。

  1. プロンプトから diskpart を実行
    >diskpart
    DISKPART>list disk
    DISKPART>select disk <該当するdisk番号>
    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 の確認はその都度しておいた方が無難

    既存のブータブルUSBメモリの .wim ファイル差し替えのみならこのステップは省略
     
  2. WinPE のイメージ、「ISO 配下のファイルとフォルダ」を全てUSBメモリへコピーする
     
  3. RAMディスク上には配置しない(wimに含めない)ツール類をUSBメモリにコピー
     
  4. ブータブルUSBメモリから起動して動作確認

何事も問題なければ作成終了。
 

自blog内の関連リンク 【2009/08/23 追加】

WinPE2.0/2.1 での方法が WinPE3.0 でまるで使えない技という訳でもないので、参考用に

 

【雑感】

ブータブルUSBメモリをひっさしぶりに作った、何か懐かしいより新鮮だった。

OS自体のサポートが終わっている WindowsXP 。
それでも WindowsAIK for Windows 7 のインストールはエラーもなく可能。
dism がエラーを吐くので dism のみで変更を加えるのは無理でも初期状態のままなら、WinPE3.0 のブータブルなにかは作成可能。
ブータブルUSBなどから起動した WindowsPE3.0 環境から、dism コマンドなど一通りの wim作成は可能っぽい。

仮想マシンで主な作業を行えば、言葉遊びに近いながらも WindowsXP(+VMのWinPE) 上で WindowsPE3.0 が行ける?!

正攻法で純粋に WindowsXP 上で dism がエラーを吐かずに実行できる技をお持ちの方、
是非その技を教えて下さい。


【追記&補足】

2009/08/09

  • 恥ずかしい語句の間違いをひっそり訂正
  • タイポ&日本語として変な所&コピペ忘れ&意味の分かりにくい所、を修正
  • 幾つかの場所を太字にして強調

2009/08/23

  • 2週間ほど待ったものの想定していたコメントが無かったので当初の予定どおりマウントに関して & それに付随的な説明を追加
  • WinPE2.0/2.1 関連へのリンクを追加

| | コメント (6) | トラックバック (1)

2009年5月 5日 (火)

PXEブートサーバーを Windows2003 付属のもので構成、他

当時(2008年春頃)探してみると意外と見つけにくかった、Windows 標準のものでPXEブート環境。そして、再構築しようとしてすっかり忘れていたので改めてメモ。
tftpd32 でのPXEブート環境を置き換え。言ってしまうと Windows2003 標準のものだけで PXE ブートさせるより、tftpd32 を利用したままの方が数倍楽だった(2008年夏頃の情報の入手性を鑑みて)。

お世話になったサイトなど

 

準備と方針

  • Windows2003 に標準で備わっているもので PXEブート環境を作る
  • DHCPサーバー兼PXEブートサーバーにする
  • RIS/WDS のような大げさな事はしない、WindowsPE 、memtest86+GAG 等をブートできれば OK
    • WindowsPE 他の組み合わせは PXELINUX(SYSLINUX) で選択可能にする
  • ファイルの置き場 d:\pxe を根っこにして d:\pxe\tftproot に主なファイルを配置
  • WindowsPE の wimファイル の準備(USBやDVD/CDなど)は予め済ませておく (こここのあたりGoogle先生 で)

まず、WindowsPE のみの PXEブート環境、その後 pexlinux で幾つかの PXEブート環境構築、という流れ。

WindowsPE を PXEブート 

まず WindowsPE だけの PXEブート。

tftpd の設定

tftpd は Windows2003 が持つ tftpd.exe を tftpd をサービスに登録し実行させる。
ファイルのputは受け付けないようにする (MS06-077)。

  1. tftpd.exe は
    C:\WINDOWS\system32\dllcache\tftpd.exe
    から取り出して適当な場所(C:\WINDOWS\system32 など)にコピーする
    個人的都合上 PXEブート 関連をひとまとめにしたいので d:\pxe にコピー
  2. tftpd をサービスに登録する際にスタートアップの種類を「自動」にし、ついでにサービスの開始をする場合、次のような感じで
    >sc create tftpd binPath= d:\pxe\tftpd.exe start= auto
    [SC] CreateService SUCCESS

    >net start tftpd
    tftpd サービスを開始します.
    tftpd サービスは正常に開始されました。
    (tftpd.exe へのパスは環境に合わせて適宜変更)
  3. tftpd.exe の設定を変更する為にレジストリ編集
    設定内容は次の3点
    • ルートディレクトリをデフォルトの c:\tftpdroot から d:\pxe\TFTProot に変更
    • putを受け付けないようにする (MS06-077)
    • 受け付けるクライアントのIPアドレスを限定(192.168.0.x)
    次の内容のレジストリファイルを結合するか、直接レジストリを編集


  4. tftpd サービスを再起動してレジストリ設定を反映させる

 

DHCPサーバーの設定 (WindowsPEのみ)

PXEブートさせるために DHCPサーバーへ設定すべき基本項目は次の4つ

オプション名 タイプ 設定値 備考
043 ベンダ固有情報 binary 01 04 00 00 00 00 ff -
060 PXEClient string PXEClient 新規作成
066 ブート サーバー ホスト名 string サーバー名 or サーバーIP -
067 ブートファイル名 string boot/pxeboot.n12 PXEブート時のF12押下不要

「 060 PXEClient 」を除いて他は既存の値を変更可能。唯一新規追加する必要のある 「 060 PXEClient 」は GUI で設定する時には DHCP MMCコンソールの 『規定のオプションの設定』から『追加』してから設定。
コマンドラインから一通り 設定すると次のような感じ。 DHCPサーバー兼PXEサーバーは 192.168.0.1 。

>netsh
netsh>dhcp
netsh dhcp>server 192.168.0.1
netsh dhcp server>add optiondef 60 PXEClient String 0 comment="for PXEブート"

コマンドを正しく完了しました。
netsh dhcp server>set optionvalue 60 STRING PXEClient

コマンドを正しく完了しました。
netsh dhcp server>set optionvalue 43 binary 010400000000ff

コマンドを正しく完了しました。
netsh dhcp server scope>scope 192.168.0.0
netsh dhcp server scope>set optionvalue 66 STRING 192.168.0.1

コマンドを正しく完了しました。
netsh dhcp server scope>set optionvalue 67 STRING boot/pxeboot.n12

コマンドを正しく完了しました。
netsh dhcp server scope>exit

コマンドプロンプトに次のようなものをコピー&ペーストすれば一気に設定可能

comment は適当に。MMCコンソールの GUI でチマチマ入力するより楽?

PXEブートのためのファイルを配置 (WindowsPEのみ)

ファイルの配置は次のような感じで

     
d:\pxe    
TFTProot   tftpd ルートディレクトリ
bootmgr.exe bootmgr
boot WindowsPE 関連置き場
fonts フォント (中にフォントファイルも)
bcd bcd
boot.sdi boot.sdi
pxeboot.n12 ネットワークブートプログラム
winpe21_x64.wim   WinPE2.1 x64 の wim
winpe21_x86.wim WinPE2.1 x86 の wim
winpe30_x64.wim WinPE3.0 x64 の wim
winpe30_x86.wim WinPE3.0 x86 の wim
           

ファイルはそれぞれ次の場所などから調達してコピー

  • ブートマネージャー
    bootmgr.exe
    WindowsPE のブートイメージ wimファイルの中など
    Windows\Boot\PXE
    からコピー
  • network boot program
    pxeboot.n12
    WindowsPE のブートイメージ wimファイルの中など
    Windows\Boot\PXE
    からコピー
  • WindowsPE イメージなど
    fontsフォルダ丸ごと、boot.sdi、各 wim ファイル
    WAIK の WindowsPE 作成作業環境の ISO フォルダの中など
    (作業フォルダ)\ISO
    からコピー
  • bcd
    通常のブータブルUFD/DVD/CD 用の bcd とはディレクトリ構造を若干変えているので配置に合わせて bcd を作り直し

    ブータブルUFD/DVD/CD の場合は通常次のように(それぞれ一行で)
    >bcdedit -store bcd -set <GUID> device ramdisk=[boot]\sources\pe30_x64.wim,{ramdiskoptions}
    >bcdedit -store bcd -set <GUID> osdevice ramdisk=[boot]\sources\pe30_x64.wim,{ramdiskoptions}
    ramdisk=[boot]\sources\<wimファイル> のようになっているはずなので
    ここでのPXEブート用の配置に合わせて(それぞれ一行で)
    >bcdedit -store bcd -set <GUID> device ramdisk=[boot]\boot\pe_x64.wim,{ramdiskoptions}
    >bcdedit -store bcd -set <GUID> osdevice ramdisk=[boot]\boot\pe_x64.wim,{ramdiskoptions}
    ramdisk=[boot]\boot\<wimファイル> のようにして bcd を作成

    【2009/07/07、2009/08/14:追記】
    BCDストア 作成&編集で多少楽できるバッチファイルはこちら
    リンク先の前者が WinPE2.0 用で、追記された方が WinPE2.1/WinPE3.0 用
    リンク先のバッチファイルを使うには pxeブートに合わせて上記のような『 [boot]\sources 』⇒『 [boot]\boot 』の置換もお忘れ無く

 

実際に PXEブートさせて動作確認が取れれば WindowsPE のみの PXE ブート環境構築は完了。
 


PXELINUX で諸々 PXEブート

WindowsPE 以外も含めて諸々 PXELINUX でブートさせる。
ここで PEXLINUX から起動させるのは、とりあえず次の5種類。

  • WindowsPE
  • Memtest86+ : メモリテスト
  • Memtest86 : メモリテスト
  • GAG : グラフィカルブートマネージャー
  • GParted : パーティションエディタ

WindowsPE系は pxelinux ⇒ WindowsPE のブートマネージャー の2段階で起動。
PXELINUX の「す」の画面は少々寂しいので壁紙付きでメニューを出すようにする。
メモリテストが2つあるのは単なる気分、特に根拠無し。

 

準備

  • WindowsPE に関しては前述のとおり
  • PXELINUX(SYSLINUX) は download を辿ってこのあたりからダウンロード
    syslinux-3.80.zip
    • まず SYSLINUX に関するドキュメントに目を通しておくことをお勧め
    • Google で pxelinux.cfg/default のサンプルを幾つか把握しておくと作業が楽
  • PXELINUXのメニューの壁紙に使う適当な画像ファイルを 640x480 の .jpg か .png で用意
  • Memtest86+ の Pre-Compiled Bootable Binary をダウンロード
    memtest86+-2.11.zip
  • Memtest86 の Free Download から ISO image for creating bootable CD (Windows - zip) をダウンロード
    memtest86-3.5.iso.zip
  • GAG のwebサイトの File download から辿ってダウンロード
    gag4_10.zip
  • GParted のwebサイトの Downloads から Stable か Testing を適当に選んで iso ではなく zip の方をダウンロード
    とりあえず Stable の gparted-live-0.4.4-1.zip

 

DHCPサーバーの設定 (PXELINUX で諸々)

DHCPサーバーへ設定すべき基本項目は次の4つ。前述からの変更点は 067 のブートファイル名のみ。

オプション名 タイプ 設定値 備考
043 ベンダ固有情報 binary 01 04 00 00 00 00 ff -
060 PXEClient string PXEClient -
066 ブート サーバー ホスト名 string サーバー名 or サーバーIP -
067 ブートファイル名 string pxelinux.0 拡張子は必ず .0

コマンドプロンプトに次のようなものをコピー&ペーストすれば一気に設定可能、

変更を加えたら DHCPサーバーサービスを一応再起動させておく。

 

PXEブートの設定(PXELINUXの設定)

PEXLINUX で選択させるのはとりあえず WindowsPE 、Memtest86+ 、Memtest86 、 GAG 、GParted の5種類でファイルの配置は次のような感じ。

     
d:\pxe    
TFTProot   tftpd ルートディレクトリ  
boot WindowsPE 関連置き場
fonts フォント (中にフォントファイルも)
bcd bcd
boot.sdi boot.sdi
startrom.0 pxeboot.n12 をリネームしたもの
winpe21_x64.wim   WinPE2.1 x64 の wim
winpe21_x86.wim WinPE2.1 x86 の wim
winpe30_x64.wim WinPE3.0 x64 の wim
winpe30_x86.wim WinPE3.0 x86 の wim
gparted GParted 関連置き場
initrd1.img initrd1.img
vmlinuz1 vmlinuz1
pxelinux.cfg PXELINUX の設定ファイル置き場
default PXELINUX の設定ファイル
memdisk PXELINUX でFDイメージ起動などで利用
pxelinux.0 PXELINUX の bootstrap program
vesamenu.c32 PXELINUX のグラフィカルメニュー用
wall.png PXELINUX のメニュー壁紙
bootmgr.exe WindowsPE の bootmgr
GAG.dsk GAG のディスクイメージ
memtest86 Memtest86 本体
MEMTEST86+ Memtest86+ 本体
 
 
httpd のドキュメントルートなど
filesystem.squashfs http で適切にアクセス可能な場所に置く
           

 

個別には次のように用意&配置。

WindowsPE 系

  • ブートマネージャー
    bootmgr.exe
    WindowsPE のブートイメージ wim の中など
    Windows\Boot\PXE
    からコピー
  • network boot program
    startrom.0 (pxeboot.n12)
    WindowsPE のブートイメージ wim の中など
    Windows\Boot\PXE
    から pxeboot.n12 を startrom.0 にリネームしてコピー (拡張子は必ず .0 に)
  • WindowsPE イメージなど
    fontsフォルダ丸ごと、boot.sdi、各 wim ファイル
    WAIK の WindowsPE 作成作業環境の ISO フォルダの中など
    (作業フォルダ)\ISO
    からコピー
  • bcd
    PXEブートのディレクトリ構造に合った bcd があればそれをコピー、無ければ bcd を作り直し
  • PXELINUX 用の設定の一例

 

Memtest86+

メモリテストその1。

  • Memtest86+ の Pre-Compiled Bootable Binary (ver.2.11)をダウンロードして解凍
  • 取り出したファイル memtest86+-2.10.bin を MEMTEST86+ にリネームして TFTProot にコピー
  • PXELINUX 用の設定の一例

 

Memtest86

メモリテストその2。

  • Memtest86 の Free Download の圧縮された iso イメージ ISO image for creating bootable CD (Windows - zip) をダウンロードして解凍
  • isoイメージから取り出したファイル MEMTEST を memtest86 にリネームして TFTProot にコピー
  • PXELINUX 用の設定の一例

 

GAG

グラフィカルなブートマネージャー GAG 。

  • GAG のwebサイトの File download から辿ってパッケージ(ver4.10)をダウンロードして解凍
  • 取り出したファイル disk.dsk を GAG.dsk にリネームして TFTProot にコピー
  • PXELINUX 用の設定の一例

 

GParted

パーティション操作用に GParted 。
GParted のwebサイトで PXEブート に関しての説明を Live CD/USB/PXE あたりから辿って GParted Live on PXE server に目を通しておく 。一部のファイルは http で利用するので注意。

  • GParted のwebサイトの Downloads から Stable か Testing を適当に選んで zip の方をダウンロードして解凍
  • vmlinuz1 と initrd1.img を TFTProot\gparted にコピー
  • filesystem.squashfs は httpd 経由となるので適切に利用可能な場所にコピー
    例えばd:\www\filesystem.squashfs のように細かいことを気にせずドキュメントルートに置いてまず動作確認をとるのが簡単。
  • PXELINUX 用の設定の一例

 

PXELINUX 系

PXELINUX は download を辿ってこのへんからダウンロードした syslinux-3.80.zip を解凍する。ドキュメントは doc の中、メニューに関しては com32/menu/MANUAL、など結構散在している感。
ファイルの準備に関しては、

  • memdisk 、pxelinux.0 、vesamenu.c32、はそれぞれ次の場所あたりにあるので確保して TFTProot にコピー
    • memdisk/memdisk
    • core/pxelinux.0
    • com32/menu/vesamenu.c32
  • 壁紙は 640x480 の .png か .jpg で用意、ここでは wall.png を TFTProot にコピー

設定ファイル default は pxelinux.cfg の中に新規作成。

  • 壁紙を持つ
  • 番号をメニューのラベルにする
    例)
    LABEL 1
    menu label ^1. Windows PE

上記2点を考慮して default を作成すると内容は次のような感じ。

default

 

実際に PXEブート させて動作確認が取れれば とりあえず PXE ブート 環境構築は完了。
 

壁紙を用意した説明を書いて画像が無いのもアレなので実際に PXEブート させると次のような感じ。

Pxeboot

特に珍しい点も凝ったこともPXEブート故の特別なことも無く、メニューの数字で選択するか上下キーで選択して起動開始。
(このエントリでの説明より画面のメニューが多いのは説明を書くのが面倒だったから・・・)

雑感

当時(2008年春頃)調べた時には『 PXE boot Windows 』などでググっても Windows2003 Server 付属もので PXEサーバー を構築するという情報になかなか辿り着けなかった。振り返ってみると『 PXEClient 060 Windows 』なら比較的簡単に到達できたという結果。キーワードを知って検索するのと知らずに検索するのは大違い、というのを思い知ったのが懐かしい。

 

【補足】

【2009/07/07:追記】

  • 参考サイト(tftpd32の時お世話になったサイト)が復活していたのでURLにリンクを張る
  • 抜けていた参考サイト(TechNet)を追加
  • memtest86 のサイトが復活していたので辿るべきファイルを追加編集
  • BCDストア の編集用バッチファイルのあるエントリへのリンクを追加

【2009/08/14:追記】

  • 少し不親切だった bcd 編集用バッチファイルへのリンクの説明を補充

| | コメント (0) | トラックバック (0)