先日のOSC Kansai kobe 2011で、「自治体におけるオープンソースデスクトップの導入とこれから」と題してセッションが行われていたのを聞いて、実際に環境を構築してみた。

一般に公開されているLinuxを使ったThin Client環境は、LTSP(Linux Terminal Server Project)のパッケージで提供されており、普通のPCをネットワーク起動させて、サーバー側のLinuxと同等の環境で操作できるようになっている。

ネットワーク起動なので、PCのBootROMに入っているPXEという機構を使うのだが、それはDHCP環境の乗っ取りが前提。
簡単に言うと、すでにネットをするのに使っているルーターのDHCPサーバー機能(NAT)は停止させて、自前のモノにしないといけない、という事だ。

これは何が不便かと言うと、
・せっかく動いていたルーターの設定を変えないといけない
・ルータ側で設定していた固定IPとかを全部NTSP側に持ってこないといけない
・NTSPサーバーがダウンしたらネットがつなげなくなる
等、後付けの環境としては、既存環境を壊す危険性があり、あまりよろしくない。

そこで、いろいろ調べたところ、ProxyDHCPを使えば、既存DHCPサーバーとの共存ができそうだとわかり実現してみた。

結論からすると、
(1) NTSP環境にあるDHCPサーバー設定は停止させる
(2) pxe-pdhcpを動かす
(3) pxelinux.cfg/defaultファイルにNBD serverの設定項目を追加する
という方法で、思いどおりの環境でThin Client環境が動くようになった。

実は、NTSP環境構築からProxyDHCP稼働まで実質2日ぐらい費やしてしまったのだが、WMware serverの罠とか、結構悩まされた。

手順、設定は下記の通り。
エッセンスだけなので、詳細はネットで調べてもらいたい。
箕面市役所の那谷さんのページがお勧め。 →ここ (リンクの許可はもらっていません...)

1. LTSP環境のインストール、実行
ひとまずは、HUB環境でも、実行を確認する方がいい。

2. DHCP serverの停止
まずは動いているかもしれないDHCP serverを直接停止させる。
$ sudo /etc/init.d/dhcp3-server stop
起動時に勝手にDHCP serverが動かないようにする。
# chkconfig dhcp3-server off
all offを確認するには、
# chkconfig --list | grep dhcp
を入れる。

chkconfigが無い場合は、事前にインストールする。
$ sudo apt-get install chkconfig

ここで一旦再起動するのがいいが、横着したい場合は、# dhclient -r でIPアドレスを一旦離し、ネットをつなぎ直し、# dhclient でIPアドレスを確保する。ifconfigコマンドで、ルータのDHCP server提供のIPアドレスが確保できていることを確認する。

3. LTSP環境のアップデート
NTSP serverのIPアドレスが更新されたので、SSH Keyの更新と、イメージのアップデートが必要。
$ sudo ntsp-update-sshkeys
$ sudo ntsp-update-image


4. pxelinux.cfg/defaultファイルの修正
/var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default を修正する
$ sudo vi /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
nbdport=2000

nbdroot=《serverのIPアドレス》:2000
に変える。
(この設定はnstp-build-clientのオプションでどうにかなりそうだけど無理矢理修正した。)

5. pxe-pdhcpの実行
pxe-pdhcp作者の古橋貞之さんがblogを書かれています。 →ここ (リンクの許可はもらっていません...)

subversionでソースファイルをダウンロードして、コンパイル(make)する。
実行コマンドは下記の通り。
$ cd 《pxe-pdhcpのダウンロードディレクトリ》
$ sudo ./pxe-pdhcp -l 0.0.0.0 -b 255.255.255.255 -t 《serverのIPアドレス》 /ltsp/i386/pxelinux.0

この設定のヒントは、dayflowerさんがblogに書かれています。→ここ (リンクの許可はもらっていません...)

これで、ネットに接続されたPCをネットブートすると、Ubuntuが立ち上がるはずだ。

ただ、下記の点が実はまだ未解決
・DHCP serverの設定で、nbi.imgの通知があったのだけど、今回は無視した。(確かNTSPのアップデート情報にnbi.imgに関することがちょっと出ていた気がしたけど。)
・どうしてpxe-pdhcpを使う場合だけNBD serverのIPアドレスを教えてやらないといけないのか?

恒久的にサーバーへの設定は、
サーバー自体がDHCP clientとして稼働するなら、起動時に前回のIPアドレスと比較して、違いがあるのなら、
・pxelinux.cfg/defaultファイルのIPアドレスの修正
・pxe-pdhcp起動コマンドの引数のIPアドレスの修正
が必要。

もちろん、pxe-pdhcpの自動起動設定も必要だ。

具体的な恒久的設定はこれから考えて行こう。