« 一瞬だけ前方クリア | トップページ | 馬小屋の中も外も »

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 編集用バッチファイルへのリンクの説明を補充

|

« 一瞬だけ前方クリア | トップページ | 馬小屋の中も外も »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/60348/44982643

この記事へのトラックバック一覧です: PXEブートサーバーを Windows2003 付属のもので構成、他:

« 一瞬だけ前方クリア | トップページ | 馬小屋の中も外も »