LTSPで苦戦した
LTSP(the Linux Terminal Server Project)というのがあって、要はWindowsのターミナルサーバーと同等なものをLinuxだけで構成するというもの。
この設定は、通常LinuxサーバにNIC2枚刺しで、片側をWAN、もう一方をLANに接続。
LAN側はDHCPサーバとして機能して、さらにネットワークブートサービスを提供するように設定するのが一般的なやり方。
この構成であれば、結構すんなり行くらしい。
でも、普通のLAN構成だと、ルータがDHCPを提供している事が多い。このDHCPを止めてLinuxをDHCPサーバとして設定するというのも、無駄な気がするし、既存のネットワークに接続して、運用という場合にリスクが高くなるので、嫌だな…と思い、別の方法を模索していた。
最終的には上手く行ったのだけれど、約1週間ほど苦戦したのでまとめておこうと思う。
既存のLANに設置する方法
いろいろと調べてみると、proxyDHCPを設置すれば、何とか行けるらしい。
最初にやった方法
pxe-pdhcpというproxyDHCPがあって、これを実行してテストする。
ソースのみの配布なので、
公式サイトを参考にビルドする。
ただし、コメントにあるように配布されているソースに一部不具合があるので、修正が必要。(トータル2行の修正)
これでもwarningが1つ出ていたけれど、一応ビルドは成功する。(このソース自体古く、新しいものは出ていないので、少々心配。枯れているなら良いのだけれど…)
ところが、何度設定を見なおして、起動を繰り返しても、うまくbootできない。
様々なオプションを試し、再起動をしても上手くいかず、諦めかけていた。
異なる方法を見つけた
次に、pxe-pdhcpとは別のproxyがあることが判明。実はよく知っているdnsmasqがその機能を実装しているらしい。
これなら、使ったことがあるし、設定も経験がある。
親切にも、設定の手順とスクリプトなどもまとめられている。
ところが、この方法だけでは上手くブートしない。
そこで、いろいろとerror logを確認すると、途中までbootプロセスは動いていて、最後のところでbusyboxに落ちていることがわかった。
手動でnbd-serverを再起動してやることで、上手く起動するようになった。
手順まとめ
後で、自分も参考にするために、一連の手順をまとめておこうと思う。
$ sudo apt-get install ltsp-server dnsmasq
※ 一般的には、ltsp-server-standaloneを入れろという記事が多いが、それはDHCPサーバも機能させる場合
$ sudo ltsp-build-client --arch i386
これで、配布用のカーネルイメージを作成する。(--arch i386はintel CPU サーバなら省略可能)
$ (cat <<EOF
ipappend 3
EOF
) | sudo tee -a /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
要は、defaultの最後にipappend 3を追加するだけ。エディタで編集してもOK
/etc/dnsmasq.d/ltsp.confをエディタ等で作成する。
#
# Dnsmasq running as a proxy DHCP and TFTP server
#
# See: http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
#
#
# TFTP
#
enable-tftp
tftp-root=/var/lib/tftpboot
#
# DHCP
#
# DHCP proxy on this network
dhcp-range=192.168.0.0,proxy
# Tell PXE clients not to use multicast discovery
# See section 3.2.3.1 in http://tools.ietf.org/html/draft-henry-remote-boot-protocol-00
dhcp-option=vendor:PXEClient,6,2b
# Better support for old or broken DHCP clients
dhcp-no-override
# Enable this for better debugging
#log-dhcp
#
# PXE
#
# Note the file paths are relative to our "tftp-root" and that ".0" will be appended
pxe-prompt="Press F8 for boot menu", 3
pxe-service=x86PC, "Boot from network", /ltsp/i386/pxelinux
pxe-service=x86PC, "Boot from local hard disk"
dhcp-rangeのみ、自分のネットワークに合わせて変更する必要がある。
dnsmasqの設定ファイルを適用するために、サービスを再起動する。
$ sudo service dnsmasq restart
なぜか、これだけでは、再起動が上手くいかなかった。(環境のせいかなぁ)
そこで、このコマンドの代わりに、以下を利用。
$ sudo service dnsmasq stop
$ sudo lsof -i:53
$ sudo kill -9 (上記のプロセス番号)
これで、確実にdnsmasqを殺してから、起動する。
$ sudo service dnsmasq start
さらに、この後次のコマンドが必須だった。(これを見つけるのに苦労した!!)
$ sudo service nbd-server restart
これで完了。
あとは、クライアントをPXE-Bootさせれば、サーバからイメージを取り込んで起動してくれる。
思ったより、早く起動するし、動作は快適。
これで古いマシンであっても、サクサク動くし、インストール作業も不要になるので、期待大!!
もう少し、ノウハウを集めるためにテストしようと思う。
この方法だと、今まで使用しているUbuntuをLTSPサーバとして利用できるので、環境構築が楽だし、ネットワークの設定を変更しなくて良いのが素敵。
ふ〜、1週間苦戦したのも甲斐があるってもんだ〜。
今思うと、PXE-pdhcpを使っても、最後のnbd-serverを再起動すれば動いたかもしれない…。でも、まぁいいか。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。