Win PE 2.0をネットワークブートする


文責

頓知亭
2007/06/某日(以後、随時改版)


目 次
1.準備をする
必要なもの
 ・ソフトウェア
 ・ハードウェア

2.環境を構築する
 ・WinPE2.0環境の構築
 ・tftp32.exeでの設定
   DHCPサービス
   tftpサービス




ご意見などはこちら
 WinPE 2.0とはVistaのコンポーネントを使ったPE環境である。XPのコンポーネントを使ったPE環境といえばBart'sPEなどが有名である。これらはPCが正常に動作しなかった場合のレスキュー環境として良く知られている。たいていはCD/DVDメディアから起動することができ、便利なのであるがCD/DVDドライブが付いていないPCではそのままでは当然のことながら使用できない。外付けのCD/DVDドライブを購入するなどの出費が伴うし、なにより必要になるたびに外付けするのは面倒だ。
 そこで、WinPE 2.0をPCのPXE機能を用いてネットワークブートする環境を構築してみる。
 実のところ、このブログに必要な手順は記載されている。ただ、英語な上に必要最低限のことしか書いてないのでこの手順だけを読んですんなりうまく行くとも限らない。自分自身への備忘録を兼ねて以下に説明していきたいと思う。

準備をする
 まずは必要なものについてハードウェアとソフトウェアについて説明する。上記のブログではこの辺りのことはあっさりと触れられているに過ぎない。これは読者を企業のシステム管理者やSIerレベルと想定しているからだと思われる。

必要なもの[ハードウェア]
(1)サーバーPC
(2)クライアントPC
(3)スイッチングHUB
(4)必要なだけのネットワークケーブル

まずはハードウェアについて簡単に説明する。

(1)サーバPC
ここではすべてWindows環境で揃えるのでサーバPCはWindows2000以降が望ましい。
ただし、後述するWAIKをインストールするにはWindows2003Server/XP/Vistaが必要なのでそれらを推奨する。また、DHCPサービスやtftpサービス機能をMS純正で構築したいならば必然的にWindows2003Serverを選択することになる。クライアントOSであるXPを使用するにはライセンス上の問題もあるかも知れない。そして出来るだけ高速なNICを使用すること。今時のPCならGigabitのものが使用できると思う。

(2)クライアントPC
 クライアントPCの必須条件は、PXEブート機能が付いていることである。これはPC/マザーボードのマニュアルのBIOSの項目を参照すれば確認できる。PCをPXEブートさせる方法についても記述があるはずなので確認しておく。そしてサーバと同じく出来るだけ高速なNICを使用すること。最低100Mbpsのものが必要だろう。1GbpsのものならばCD/DVDメディアから起動するよりずっと早く、快適である。

(3)スイッチングHUB
サーバ/クライアントのNIC速度に見合ったものにすること。また複数クライアントPCを同時にネットワークブートする必要性がある場合は民生用のHUBでは性能的に問題が生じる恐れがあるので業務用のHUBの使用を推奨する。このような使い方を個人ですることはあまりないのだろうけど。


必要なもの[ソフトウェア]
(1)WAIK
(2)DHCPサービス
(3)tftpサービス

 次に必要なソフトウェアについて説明する。

(1)WAIK
WAIKとはWindows Automated Installation Kit(Windows 自動インストール キット)の略でこちらからダウンロード可能だ。今のところXP/2003/Vistaでしか動作しないので条件を満たすPCにインストールしておくこと。この説明ではサーバPCにデフォルト値にてインストールされていることを前提に説明を進める。インストールの詳細については、付属のマニュアルを参照すること。Webを検索しても有用な情報が得られるはずだ。

(2)DHCPサービス
PXEブートをするには必須のサービスである。Windows2003serverであればOSの機能として含まれている(追加インストールする必要はあるが)。それ以外のOSの場合は、tftpd32.exe(作者サイト)などのフリーソフトのDHCPサービス機能を使用する(Windows2003serverでも、もちろん使用可能)。必要に応じてダウンロードしておくこと。

(3)tftpサービス
これもWindows2003serverであればOSの機能として含まれている。ただし、使用するにはこちらにあるような手順を踏む必要がある。こちらなどを参考にして必要に応じてセットアップしておく。それ以外のOSの場合はDHCPサービスと同様にtftpd32.exeで代用可能(Windows2003serverでも、もちろん使用可能)だ。

さて、これで準備は整った。次はサーバPCに環境を構築していこう。


環境を構築する
(1)起動用Winpe環境をサーバPC上に構築する
(2)サーバサービスの設定を行う
(3)tftpサービス

(1)起動用Winpe環境をサーバPC上に構築する
 ここまでで必要なハードウェアが揃い、サーバPCにWAIKがインストール出来ているはずだ。 ここから先の手順はこちらのブログを参照しながら作業を行おう。 まずはStep.1から、ここでは一行ずつコマンドプロンプトから実行するよう指示されている。管理者権限にてコマンドプロンプトを起動しておこう。なお、今あなたが見ている画面のサイズによっては不正な位置に改行が入っているように見えるので、全文を一旦テキストエディタなどに貼り付けて、それを一行ずつコマンドプロンプトにペーストして実行すると間違いなく実行できる。
以下に、上記ブログから作業手順を引用して説明する。太字が入力すべきコマンドである。
cd /d "C:\Program Files\Windows AIK\Tools\PETools"
カレントディレクトリをWAIKのインストールフォルダに移動する

copype x86 c:\winpe_x86
c:\winpe_x86フォルダ(勝手に作成される)にwinpe.wimイメージをコピーする

ren winpe.wim winpe_x86.wim
winpe.wimをwinpe_x86.wimに変名する

imagex /mount c:\winpe_x86\winpe_x86.wim 1 c:\winpe_x86\mount
imagex.exeを利用してwinpe_x86.wim内にパックされている1番目のイメージセットをc:\winpe_x86\mountにマウントする

md C:\PXEServer\TFTPRoot\Boot\Fonts
tftpサービスで使用するフォルダを作成

copy c:\winpe_x86\mount\Windows\Boot\PXE\pxeboot.n12 C:\PXEServer\TFTPRoot\boot /y
copy c:\winpe_x86\ISO\boot\fonts\*.* c:\PXEServer\TFTPRoot\Boot\Fonts /y
copy c:\winpe_x86\mount\Windows\Boot\PXE\bootmgr.exe C:\PXEServer\TFTPRoot /y
マウントしたイメージからブートファイル、フォント、ブートマネージャなどを取り出して、
tftpサービスで使用するフォルダにコピーする。

imagex /unmount c:\winpe_x86\mount
マウントしたイメージをアンマウントする。

copy C:\winpe_x86\ISO\boot\boot.sdi C:\PXEServer\TFTPRoot\boot /y
boot.sdiをtftpサービスで使用するフォルダにコピーする。

copy c:\winpe_x86\winpe_x86.wim C:\PXEServer\TFTPRoot\boot /y
winpe_x86.wimをtftpサービスで使用するフォルダにコピーする。


これでStep.1は完了である

さて、作業を続行しよう。
件のブログのStep.2では太字のコマンドラインの内容をバッチファイルとして保存せよと書かれている。Step.1と同じく、あなたの表示環境によっては意図しない位置で見た目上の改行が行われるため、コピーしたものをテキストエディタなどにペーストするようにしよう。ここではBCDEDIT.EXEというコマンドが使用される。今のところVISTAの%windir%\system32フォルダ内に存在するものをコピーして使用するしかないようである。ここはライセンスに抵触しないように注意していただきたい。 ファイル名はCreateBCD.cmdとしておく。これをC:\PXEServerに保存する。次にコマンドラインプロンプト(念のため管理者権限で実行しておく)から、実行する。 ところが、筆者の日本語OS環境では一カ所うまくいかなかった。8行目の以下の部分である。

for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x86" /application osloader') do set guid1=%%c

この行は、環境変数guid1にWinpe_x86.wimのGUIDを代入しようとしているのだが、代入元はBceedit.exeのメッセージ(標準出力)である。ところが表示内容が日本語化されたからなのか、トークンの切り出しが意図したとおりに行かないのである。そこで下記のように最後の%%cの部分を%%bに修正するとうまくいく。(注:日本語Windowsでも環境によっては英語表示になるようだ。その場合は修正は不要である)
for /f "tokens=1-3" %%a in ('Bcdedit /store %BCD-File% /create /d "WinPE x86" /application osloader') do set guid1=%%b


以上の手順ではWAIKに同梱されている標準のwinpe.wimを使用しているが、imagexコマンドなどを使用して自分なりにカスタマイズした*.wimファイルをwinpe_x86.wimにリネームして使用しても基本的にはうまくいくはずである。

これで起動用WinPE環境の準備は整った。
引き続きサーバサービスの各種設定を行おう。
(2)サーバサービスの設定を行う

 Step.3では既に述べたtftpd32.exeを使用した場合の設定方法が記載されている。MS純正サービスを使用した方法についてはこのブログでは触れられていない(記事のタイトルが「Booting WinPE 2.0 from a third party PXE Server」なのだから当然のことではある)。しかしながらフリーソフトの使用を避けねばならない環境にいる向きもおられると思うのでそちらについては後述する。  まず、すでにダウンロード済みのtftpd32を解凍し、その中からtftpd32.exetftpd.hlpC:\PXEServerにコピーする。 次にtftpd32.exeを起動し環境を設定するのだが、その前にWindowsのファイヤウォールを無効にしておくこと。無効にしたくない場合は必要なポートだけを解放することになるがその方法については、当文書では触れない。
tftpd32.exeを起動したら、画面下の「setting」ボタンをクリックし、設定画面を開き、以下のように設定する。

Base Directory
C:\PXEServer\TFTPRoot とする。

Global Settings
 TFTP ServerとDHCP Serverにチェックを入れる。

TFTP Security
Read Onlyにチェックを入れる

Advanced TFTP Options
Allow "\" As virtual rootにチェックを入れる(バックスラッシュは実際には半角表示)
Use anticipation windows ofを8192にする(この設定のせいでうまく行かなくなる場合もある)

TFTP Security
Read Onlyにチェックを入れる

 ここまで出来たら、「OK」を押して、一旦プログラムを終了し、もう一度立ち上げる。
 引き続き、DHCPサービスの設定を行うためDHCP serverタブをクリックする。
ここではサーバPCのIPアドレスを192.168.0.1、サブネットマスクを255.255.255.0として設定を行う。
IP pool starting address  DHCPサービスの開始アドレスなので、192.168.0.2とする

Size of Pool
 リースするアドレスの数を入力する。ここでは10としておく。

Boot File
 /boot/pxeboot.n12と入力する。

Default Router
 ゲートウェイのアドレス、192.168.1.1と入力する。

Mask
 サブネットマスク。255.255.255.0と入力する。

Domain name
サーバのホスト名、適当で構わない。hogehogeなどとしておく。

ここまでで準備は完了である。うまくいくか試してみよう。
サーバPCとHUBとクライアントPCを接続して、クライアントPCをネットワークブートする設定に変更する(方法はマニュアルを参照すること)。これでクライアントPCの電源を入れればWinPE2.0が起動するはずだ。

(MS純正のDHCP/tftpサービスの設定方法は後日記載予定) と書いたまま何もせずにいたのだが、こちらのページの解説が詳しい。

[CLOSE] [◆HOME]
inserted by FC2 system