PXEブートサーバーを Windows2003 付属のもので構成、他
当時(2008年春頃)探してみると意外と見つけにくかった、Windows 標準のものでPXEブート環境。そして、再構築しようとしてすっかり忘れていたので改めてメモ。
tftpd32 でのPXEブート環境を置き換え。言ってしまうと Windows2003 標準のものだけで PXE ブートさせるより、tftpd32 を利用したままの方が数倍楽だった(2008年夏頃の情報の入手性を鑑みて)。
お世話になったサイトなど
- Windows の tftpd.exe の利用に関して
- @IT tftpdサービスを起動する
レジストリの設定に関して参照可能(Windows2000 の tftpd.exe で確認)
- @IT tftpdサービスを起動する
- PXEブート
- tftpd32 での PXEブート環境構築時にお世話になったサイト
http://tonchitei.web.fc2.com/computer/WinPE20.html
簡潔で分かりやすかったのですが無くなってます
【2009/07/07:追記】 復活していたのでリンク - Windows Server での DHCP 設定に関して(Windows2000)
http://unattended.sourceforge.net/pxe-win2k.html - Google先生
PXEClient 060 Windows - Microsoft の TechNet のこのへん (ブートプログラム)
Windows ⇒ Windows Server ⇒ Windows Server 2008 R2 (Release Candidate) ⇒ Browse Windows Server Technologies ⇒ Windows Deployment Services ⇒Deployment ⇒ Windows Deployment Services Deployment Guide ⇒ Configuring Your Deployment ⇒ Managing Network Boot Programs - Microsoft の TechNet のこのへん (PXE での展開) 【2009/07/07:追記】
Windows ⇒ Windows Vista ⇒ Windows Vista テクニカル ライブラリ ⇒ Windows Vista : 展開 ⇒ Windows Automated Installation Kit ... ⇒ Windows プレインストール フェーズ ⇒ フェーズ 4: イメージの展開 ⇒ 展開のチュートリアル ⇒ チュートリアル : PXE を使用してイメージを展開する
- tftpd32 での PXEブート環境構築時にお世話になったサイト
- PXELINUX (SYSLINUX)
- 付属のドキュメント
- Google先生
pxelinux.cfg
準備と方針
- 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)。
- tftpd.exe は
C:\WINDOWS\system32\dllcache\tftpd.exe
から取り出して適当な場所(C:\WINDOWS\system32 など)にコピーする
個人的都合上 PXEブート 関連をひとまとめにしたいので d:\pxe にコピー - tftpd をサービスに登録する際にスタートアップの種類を「自動」にし、ついでにサービスの開始をする場合、次のような感じで
>sc create tftpd binPath= d:\pxe\tftpd.exe start= auto(tftpd.exe へのパスは環境に合わせて適宜変更)
[SC] CreateService SUCCESS
>net start tftpd
tftpd サービスを開始します.
tftpd サービスは正常に開始されました。 - tftpd.exe の設定を変更する為にレジストリ編集
設定内容は次の3点- ルートディレクトリをデフォルトの c:\tftpdroot から d:\pxe\TFTProot に変更
- putを受け付けないようにする (MS06-077)
- 受け付けるクライアントのIPアドレスを限定(192.168.0.x)
- 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}ramdisk=[boot]\sources\<wimファイル> のようになっているはずなので
>bcdedit -store bcd -set <GUID> osdevice ramdisk=[boot]\sources\pe30_x64.wim,{ramdiskoptions}
ここでのPXEブート用の配置に合わせて(それぞれ一行で)
>bcdedit -store bcd -set <GUID> device ramdisk=[boot]\boot\pe_x64.wim,{ramdiskoptions}ramdisk=[boot]\boot\<wimファイル> のようにして bcd を作成
>bcdedit -store bcd -set <GUID> osdevice ramdisk=[boot]\boot\pe_x64.wim,{ramdiskoptions}
【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ブート させると次のような感じ。
特に珍しい点も凝ったこともPXEブート故の特別なことも無く、メニューの数字で選択するか上下キーで選択して起動開始。
(このエントリでの説明より画面のメニューが多いのは説明を書くのが面倒だったから・・・)
雑感
当時(2008年春頃)調べた時には『 PXE boot Windows 』などでググっても Windows2003 Server 付属もので PXEサーバー を構築するという情報になかなか辿り着けなかった。振り返ってみると『
PXEClient 060 Windows 』なら比較的簡単に到達できたという結果。キーワードを知って検索するのと知らずに検索するのは大違い、というのを思い知ったのが懐かしい。
【補足】
【2009/07/07:追記】
- 参考サイト(tftpd32の時お世話になったサイト)が復活していたのでURLにリンクを張る
- 抜けていた参考サイト(TechNet)を追加
- memtest86 のサイトが復活していたので辿るべきファイルを追加編集
- BCDストア の編集用バッチファイルのあるエントリへのリンクを追加
【2009/08/14:追記】
- 少し不親切だった bcd 編集用バッチファイルへのリンクの説明を補充
| 固定リンク
この記事へのコメントは終了しました。
コメント