PXE サーバおよび配信環境を構築 - Symantec Ghost Solution Suite 2.5.1


1. 目標

 Ghost の起動メディアを用いずに、クライアントイメージを配信する環境を構築する。

 予算が確保できて、作業に対する担保を必要する場合は、Altiris PXE Configurationを選択することを勧める。

 また、共有リソース(サーバ)に対してWindows Serverのイメージ配信を目指すならば、ハードウェア面での技術的なフォローを必要とする可能性がある。  簡単に例を挙げれば、RAID、SAS を使っているサーバの場合、ストレージとネットワークインターフェースドライバを一般提供していない場合が想定される。  加えて、Ghost の仕組み上、RAID構成のディスクに対してイメージを配信することが可能であるかも定かではない。  そしてRAIDの論理ディスクを想定したつもりが、物理ディスク一枚だけにイメージが配信され、結果、起動不全に陥るということも予想される。

 従って、配信先をワークステーション(クライアントコンピュータ)のみに絞って記述する。

2. 機能要件

3. システム構成

  1. Ghost サーバ
  2. Windows Server 2008 R2。 イメージ配信元となるコンピュータ。 ここからコンソールも操作
  3. PXE ブートサーバ
  4. FreeBSD 9.0-RELEASE。 PXE 起動イメージを配信するコンピュータ。 tftp+dhcpサービスを提供
  5. 配信先クライアント
  6. Windows 7 Ultimate SP1。 イメージ配信先となるコンピュータ

 PXE ブートサーバは、Ghost サーバに統合することが可能だが、Windows Server 2008 R2には、単純なtftpサービスがない。
 これをWindows 展開サービスで代用して実現することも可能であるが、一足飛びに環境を実現すると内部動作の理解を妨げる。
 従って、ここでは上記構成で環境を構築する。

4. 前提条件

 前提条件を列挙する。

 技術者を自称するならインターネットに潜む筆者のような蛆の情報を利用せず、正しい情報源(公式サポートと公開情報)を使って実現するべき。
 インターネットから拾っただけの情報で、さも自分のスキルが高いことを詐称する真似をしても、浅い知識ではすぐにぼろが出る。

5. 環境構築

5-0. 全体

 作業全体のステップを列挙する。

  1. Ghost ブートイメージを作成
  2. PXE ブートサーバを構築
  3. 参照コンピュータからイメージを取得
  4. Ghost サーバからイメージを配信

5-1. Ghost ブートイメージを作成

 基本は「Ghost ブートイメージ作成」を使う。 ポイントは、参照コンピュータに実装されたNIC に対応したドライバを準備すること。
 標準ドライバ(Universal Packet Driver)で動くような機種ならばよいが、最近の機種だとほぼ100%の割合で起動しない。
 最近の機種は、Realtek製のNIC を使っていることが大半であり、専用のドライバを必要とする。
 何故、標準ドライバで動作しないのかは、Realtek に聞いてください。

 作成するブートイメージは、「Ghost クライアント 3Com ネットワークブートイメージ」「Windows PE」を選択する。
 Ghost Solution Suite 2.5.1に付属するWindows PEは、Windows 7ベースだと思います。 未確認です。
 ネットワークドライバもWindows 7ベースのドライバを使うこと。 この手順の検証時は、Vistaのドライバを選びました。

5-2. PXE ブートサーバを構築

 前節で作成したGhost クライアントのブートイメージは、イメージ配信サーバも含めてWindows 環境を前提としています。
 PXE ブート段階で起動するイメージもWindows であるから、パスセパレータ(ディレクトリ区切り文字)も\です。
 加えて、ファイルシステム上のファイル名も大文字と小文字を区別しませんから、PXE ブートサーバをPC-Unixで構築しようとすると、ここに引っかかります。

 FreeBSD の標準tftpdもWindows に対してフォローするオプションを持ちません。
 従って、これを意識した機能を持つtftp-hpa を利用する必要があります。

5-2-1. tftpdの動作パラメータを構成

 インストールは、Portsを用いますので省略します。 「/usr/ports/ftp/tftp-hpa」です。

1) /etc/rc.conf

 以下を追加する。

tftpd_enable="YES"
tftpd_flags="-s /home/tftpboot -m /usr/local/etc/tftpd.remap"

 tftpd は、ファイルシステムの「/home/tftpboot」を外部からは「/」にマップする。
 取り扱う文字のマッピングを「/usr/local/etc/tftpd.remap」で定義する。

2) /usr/local/etc/tftpd.remap

 上記のパスにファイルを作成し、そこに以下の文字列を記録する。

rg \\ /
rg A a
rg B b
rg C c
rg D d
rg E e
rg F f
rg G g
rg H h
rg I i
rg J j
rg K k
rg L l
rg M m
rg N n
rg O o
rg P p
rg Q q
rg R r
rg S s
rg T t
rg U u
rg V v
rg W w
rg X x
rg Y y
rg Z z

 「\」を「/」に置換、アルファベットの大文字を小文字に置換させている。
 このことより、PXE サーバに配置するPXE ブートに必要となるディレクトリとファイル(言い換えれば、/home/tftpboot配下のディレクトリとファイル)は、すべてアルファベットを小文字に統一する。

3) PXE ブートに必要なファイルの配置

 Ghost クライアントのブートイメージを/home/tftpboot配下へディレクトリ構造を維持してアップロードする。

 最終的に、以下のような構造にする。

/
/bootmgr.exe
/boot/
/boot/bcd
/boot/boot.sdi
/boot/bootmgr.exe
/boot/deploy.wim
/boot/pxeboot.n12

 /bootmgr.exeは、/boot/bootmgr.exeと同じものでよい。 Ghost ブートイメージ作成では、作成されない。 PC-Unixなのでシンボリックリンクでも問題ないと思います。

 尚、PXE の起動シーケンスで「Fonts/wgl_*.ttf」が見つからない旨のエラーが発生した場合は、Ghost のプログラムフォルダから「Fonts」配下のファイルを/home/tftpboot/boot/fontsへアップロードすること。

5-2-2. dhcpd の動作パラメータを構成

 isc-dhcpdを使います。 wide-dhcpdでも実現可能でしょうが、パラメータのディレクティブ(設定項目名)が異なります。

1) /usr/local/etc/dhcpd.conf

 必要な箇所だけ明記します。 PXE と関係ないdhcpdを起動させる為の設定は省略しますから、それらは他をあたってください。

host kuchidakeSE {
 hardware ethernet 00:BA:0A:0A:00:0E;
 fixed-address 255.254.253.128;
 filename "boot/pxeboot.n12";
 option dhcp-client-identifier "PXEClient";
 option vendor-encapsulated-options 01:04:00:00:00:00:ff;
 option tftp-server-name "255.254.253.127";
}

 hostの次の文字列は、任意の文字列。
 hardware ethernet は、PXE ブートを許可するMAC アドレス。 配信先コンピュータが多い場合は省略して、PXE ブートを手動で行った方が楽。
 tftp-server-name は、tftpサーバのIPアドレス。
 filename、dhcp-client-identifier、vendor-encapsulated-optionsは、このままの設定値を与える。 PXE ブートの挙動を規定する値で、省略したり変えたりすると動かない。

 「blockquoteの部分を、コピペしてエラーが出た」とか馬鹿なことを言い始める方は、流石にセンスと経験が不足しているから、別の職へ転じるべき。

5-2-3. まとめ

 以上で設定は終了です。 

5-3. 参照コンピュータからイメージを取得

 Ghost コンソールを使った通常の手順であるから説明を割愛する。 注意点は、参照コンピュータをPXE 起動させるだけ。

5-4. Ghost サーバからイメージを配信

 5-3.と同様の理由から割愛。 注意点も同じ。

6. 総括

 本当、このウェブページでPXE+Ghostサーバを構築しようと考えている戯けはいないと信じています。
 予算が厳しい情報システム部の担当者が読んでいるなら、これを参考にしてWindows Server 2008 R2でGhost+PXEサーバを構築することを検討してください。
 Windows Server 2003でも実現可能ですが、tftpdを導入する部分に特殊な手順、あるいはフリーソフトウェアを利用する必要が生じます。

 ポイントは、dhcpのパラメータとNIC ドライバの準備だけです。 それ以外は、tftpdを何で実現するかです。

 最低三台のPCを必要とする構成なので非経済的です。 本構成のメリットは、tcpdumpを利用できることだけです。

 PXE のブートシーケンスでエラーが発生するようならば、PXE サーバ上で「tcpdump -vv udp」を実行して通信内容をトレースしてください。
 ファイル名が出るから、プロトコルを知らずとも大体原因は推測できます。