2011/12/25

【Ubuntu 11.10】 LTSPで、古いノートPCを有効利用してみた(`・ω・´)b


『LTSP (Linux Terminal Server Project)サーバーを、仮想環境のUbuntu 11.10に導入して
 同じハブに接続したクライアント(古いノートPC)から、ネットワークブートして使う』

ということをやってみました(`・ω・´)b

LTSPなら、実際の処理の大半はサーバー側で実行され、
クライアント側は『ネットワーク接続可能』『キーボード・マウスがついてる』程度の性能があれば良いのですww
-> シンクライアントと呼ばれるそうです。

これで、古いノートPC (Pentium III 1GHz、メモリ 512MB)で、キビキビ動く最新Ubuntuが使えるようになりました(*´Д`)ウヒョー
eclipseの起動時間で比較すると、40秒->5秒 ぐらい。 (もちろん、短縮時間はサーバー性能で変わります・・)

Ubuntu 11.10にLTSPを導入する手順と陥りやすいポイントは、以下の通りです。

LTSPのサーバーとなるUbuntu環境を作成

今回サーバー環境は、VMware Player上にインストールしたUbuntu 11.10 (Desktop版)を使いました。
(砂上の楼閣のすずさんによると、VMwareの簡易インストール機能は使わない方が良いようです・・)

VMwareの『仮想マシン設定』画面を開きます。
[ネットワーク アダプタ]の[ネットワーク接続]設定を、[ブリッジ]に設定しておきます。

LTSPのインストールとカーネルイメージ作成

端末から以下のコマンドを実行して、LTSPパッケージのインストールと、クライアントがロードするイメージの構築を行います。
$ sudo apt-get install ltsp-server-standalone openssh-server
$ sudo ltsp-build-client
2つ目のコマンド実行には数十分かかりますので、おしるこでも食べながらマターリ待ちます(´ー`)

DHCPサーバーの設定と開始

DHCPサーバーの通信設定を行います。
$ sudo gedit /etc/ltsp/dhcpd.conf

テキストエディタのgeditが開くので、ルーターやハブのLAN設定(192.168.1.*系のIPなど)を確認しながら設定します。
自分の環境ではハブの設定にあわせて、サブネットマスクなどを以下のような設定にしました。
#
# Default LTSP dhcpd.conf config file.
#

authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.20 192.168.1.50;
    option domain-name "example.com";
    option domain-name-servers 192.168.1.1;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.1;
#    next-server 192.168.0.1;
#    get-lease-hostnames true;
    option subnet-mask 255.255.255.0;
    option root-path "/opt/ltsp/i386";
    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i386/pxelinux.0";
    } else {
        filename "/ltsp/i386/nbi.img";
    }
}
各設定項目の詳細な話は、『DHCPサーバの構築』というページが詳しいのでご参照下さいm(_ _)m

設定が終わったら保存してgeditを閉じて、以下のコマンドを実行。DHCPサーバーを起動します(`・ω・´)b
$ sudo /etc/init.d/isc-dhcp-server start
うまく行けば『* Starting ISC DHCP server dhcpd [ OK ] 』と表示されます。

OS起動時にDHCPが自動起動するようにするには、このように設定しますw
$ chkconfig isc-dhcp-server on

chkconfig --listで設定を確かめて、こんな感じになってればOKです(`・ω・´)
$ chkconfig --list isc-dhcp-server
isc-dhcp-server           0:off  1:off  2:on   3:on   4:on   5:on   6:off

(ポイント)
一般的にDHCPサーバー起動には『/etc/init.d/dhcp3-server start』を実行・・という記事が多いのですが、
Ubuntu 11.10ではうまくいきません。どうやら、Ubuntu 11.04以降ではVer.4の『isc-dhcp-server』に置き換わってるそうです。

ユーザーを作成して、クライアントからログイン

クライアントからログインするためのユーザーを作成します。(インストール時に作った管理者ではログイン出来ませんでした。。)
Ubuntu画面右上の電源ボタンを押して、[システム設定...]-[ユーザーアカウント]画面で追加します。

次に、クライアントとなるPCのBIOS設定を開いて、ネットワークブート可能な設定に変更します。
さらに、ネットワークブートの優先順位をHDD以上にするなどして、優先順位を上げておきます。

あんまり古すぎるPCだとネットワークブートに非対応の場合もありますが、ROM-o-maticを使ってブート可能に出来るようです

DHCPサーバーと接続できてネットワークブートできれば、こんなログイン画面が表示されます。
うまくログインできたら、華麗なるシンクライアント生活の始まりです(`・ω・´)b

ログイン出来ない場合のトラブルシューティング

(ケース1) ブート中に『initramfs』と表示されてログイン画面が表示されない場合、
 1. サーバーを再起動してみて下さい。

(ケース2) ログインしても、「再起動しています...」と表示されたりした後にログイン画面に戻される場合は、
 1. ログインIDとパスワードが間違っていないか、もう一度確認してみる(大文字、小文字の違いなど)
 2. ログイン画面左下の[Preferences]をクリックして[セッションの選択]を選び、[Ubuntu]を選択して再度ログインしてみる
 3. サーバーで以下のコマンドを実行してSSHキーの更新を行い、サーバーを再起動してみる
$ sudo dpkg-reconfigure openssh-server
$ sudo ltsp-update-sshkeys
$ sudo ltsp-update-image

最初遭遇した問題は、ログイン画面に『ログインユーザー名(testuser)』を入力すべきところを、
『ユーザーの名前(TestUser)』を入力していたのが原因でした(ノД`)ウヘェ・・・w

その他、サーバー側でシステムアップデートを行うとログイン出来なくなる場合がありますが、
その場合も上記『ケース2』の『対処2』または『対処3』で解決できました(;´∀`)

2012/01/09 : ログイン出来ない場合の対処方法を、トラブルシューティング形式で加筆・修正しました
2012/04/18 : DHCP自動起動の方法やdhcpd.confファイルの名称など加筆・修正しました

2 件のコメント:

mega さんのコメント...

ネットワークスペシャリストの午後2の問題が正にこれだった。NICチーミングやスパニングツリーで冗長化してあったけど。

ケモケモ さんのコメント...

過去問見たけど、ほんまやね・・(;´∀`)

skypeみたいなサービスに、シンクライアントシステムを導入する問題っぽいねw