Linux ターミナルサーバとディスクレスクライアント

Linux ターミナルサーバとディスクレスクライアント
松本ソフト開発センター 高砂
ターミナルサービス
ターミナルサービスはサーバーベースコンピューティングのひ
とつのソリューションです。ターミナル(端末)は入力と表示だけを
行い、サーバが端末の入力を受け取り、処理をし、その処理結
果だけを端末に返すと言うようなものです。
皆さんが勉強会でよく使っている telnet や SSH もターミナルサー
ビスと言えるでしょう。
インターネット
ディスクレス
クライアント
ターミナル
サーバ
eth1
telnet や SSH はコマンドラインでコンピュータを操ることができ
る皆さんには十分ですが、GUI しか操作できない方々には向き
ません。そうした方々には VNC とか、WindowsXP のリモートデ
eth0
スクトップとかが使えます。
しかし、VNC もリモートデスクトップもクライアント側に OS やら
なにやらクライアントアプリケーションが必要です。これらの管理は面倒です。ハードディスクなどのトラブル
が発生したら、OS からインストールしなおしです。
昔は(今も一部では)サーバ-クライアントシステムは、サーバとして高性能の UNIX サーバを使いユーザー
は X 端末と言う入力装置(キーボード、マウス)と出力装置(ディスプレイ)だけを備えたものを使っていました。
この形態なら、クライアント側の端末のメンテはほとんど要りませんし、何より端末側にはご大層な OS も必
要ありません。これと同じことを PC と Linux でやってしまおうという Linux Terminal Server Project (LTSP)
がありますが、その中のひとつに K12LTSP というものがあります。これは、学校で、低コストでコンピュータ
を利用しようという目的で始まったものです。
メリットとデメリット
LTSP を使うメリットは何でしょう。いろんな立場からいろんなメリットが見出せることでしょう。
•
クライアントの OS がいらない
•
HDD もいらない
•
性能の低い PC でも快適なクライアントにできる
•
データの一元管理ができる1
•
アプリケーションの一元管理ができる
•
どの端末でログインしてもいつも同じ環境
など、いろんなメリットがあります。クライアントの外部記憶装置は制限することができるので、情報の持ち出
し対策も容易になります。
しかし、若干のデメリットもあります。ターミナルサーバとなるコンピュータにある程度の高性能が要求され
るからです。特にメモリがたくさん必要となるようです。また、ネットワークを通じてサーバとクライアントがデー
タのやり取りをしますから、ネットワークも速いに越したことはありません。
必要な機材・性能
必要な機材は普通にネットワークを組むのと変わりありません。サーバとなるコンピュータ、クライアント
1
データがサーバ上にのみ存在すると言う意味。実際のデータは各ユーザーのホームディレクトリなどに存在します。
<1>
PC、ネットワークケーブル、ハブ、必要ならインターネット回線といったところです。ハードウェアの性能につ
いては、5 クライアントの場合、以下のような程度になります。
☆ターミナルサーバの目安
PentiumIII 1GHz
メモリ 512MB+α2
HDD 10GB3
NIC (ルーターとしても使う場合は 2 枚必要)
☆クライアントの目安
Pentium 200MHz
メモリ 32MB
ネットワークブートが可能な NIC4
クライアントの NIC についてはもう少し詳しく説明しておきます。ネットワークブートの手法は
Etherboot、PXE、MBA、Netboot などいろいろあるようです。LTSP のドキュメントでは、それらに対応してい
るようですが、K12LTSP がそれらすべてに対応しているかはよく分かりませんでした。とりあえず、K12LTSP
では PXE というものが利用できます。この PXE に対応した NIC が必要です。PXE(Preboot eXecution
Environment)は、Intel の作成したネットワークブートのための規格です。この PXE に準拠した NIC はソフト
ウエアを ROM 上に持っていますが、安価な NIC では、ROM を取り付けるソケットがあっても ROM が入手
できないものもあります。
PXE 対応でない NIC でも、LTSP のクライアントにすることができます。後述しますが、起動用 ROM イメー
ジを保存したフロッピーディスクで起動する方法です。
クライアント起動の仕組み
IP アドレス割り当て要求
IP アドレス割り当て
クライアント
カーネル読み込み
サーバ
NFS によるファイルシステムのマウント
このようにしてクライアントが起動した後は、クライアントの入力はネットワーク経由でサーバに伝えられ、サー
バは処理結果を返し、クライアントはそれを表示するのです。
K12LTSP の入手とインストール
K12LTSP のサイトは
http://k12ltsp.org/contents.html
です。ここから最新版の K12LTSP 4.4.1 のインストール
CD(5 枚)のイメージを取得してインストールします。
最新版は Fedora Core 4 がベースです。つまり、Fedora
Core をインストールしたことがあれば、K12LTSP も簡単
2
3
4
最低 512MB、ユーザー一人につき 50MB 程度は必要らしい。
K12LTSP フルインストールで 6GB 以上。後はユーザー領域をどれだけ取るかによる。
ネットブートできない場合は、FDD から起動することも可能。
<2>
にインストールできます。ただひとつの違いは「インストールの種類」を選択するステップで「Linux Terminal
Server」を選ぶだけです。
NIC を 2 枚装備していた場合、eth0 が内部ネットワーク側、eth1 が外部ネットワーク側になり、ターミナル
サーバは内部ネットワークのゲートウェイとなります。また、ターミナルサーバでは DHCP サーバも動いてい
るので、それ以外に内部ネットワーク上に DHCP サーバがあれば停止しておく必要があります。
インストールしたそのままの状態なら、eth0(内部側)は 192.168.0.254 に設定され、eth1(外部側)は DHCP
で自動的に割り振られます。また、自身の DHCP サーバ機能で内部ネットワーク上のクライアントに
192.168.0.1~192.168.0.253 を割り振るようになります。
LTSP は、既存の Linux システムにインストールすることも可能ですが、煩雑なので割愛します。LTSP の
サイトの RPM パッケージの場所だけ書いておきます。
http://www.ltsp.org/ltsp-utils-0.11-0.noarch.rpm
クライアント側の準備
ネットワークブートができるようにするだけでクライアント側の準備は終わりです。多くの場合、BIOS セット
アップ画面で起動デバイスを設定できますから、Network か LAN を優先的な起動デバイスに設定します。
ネットワークブートの種類はいくつかありますが、PXE を選択します。
採用している BIOS により、設定方法はいろいろですが、DELL の OptiFlex GX270 の場合は以下のよう
な手順でした。
1.起動画面で[F2]を押して BIOS セットアップに入る
2.「Integrated Device(LegacySelect Options)」を選択し、[Enter]
3.「Network Interface Controller」の項目を「On w/ PXE」にする
4.再起動し、再び BIOS セットアップに入る
5.「Boot Sequence」に「NIC」の項目が表示されるので、その優先順位をトップにする
Award BIOS を採用した ASUS の Terminator K7(ベアボーンキット)の場合は以下。
1.起動時に[DEL]キーを押して BIOS セットアップに入る
2.「Boot」メニューの「Onboard LAN Boot ROM」を Enabled にして再起動
3.「Boot」メニューの「Other Boot Device」の項目を「Realtek Boot Agent」にし、優先順位をトップに
する
4.再起動時に[Shift]+[F10]で、Realtek Boot Agent の設定に入る
5.「Network Boot Protcol」項目を「PXE」に、「Boot Order」項目を「Int 19h」にする
BootROM が搭載されていないか、PXE に非対応の NIC の場合はネットワークブートはできません。ネッ
トワークブートに対応した NIC に入れ替えるか、FD を利用した起動を行う事になります。
FD から起動するには
ネットワークブートができない場合、起動用の FD を用意しなければいけません。その FD には搭載されて
いる NIC に対応した起動用 ROM イメージを収録しておきます。各種の起動用 ROM イメージは K12LTSP
をインストールした PC の /tftpboot/lts/boot/bootroms/individual-images/ に収められています。この中に対
応する ROM イメージがない場合でも、ROM-o-matic.net(http://www.rom-o-matic.net/)で、ROM イメージを
取得することができる場合があります。
取得した起動用 ROM イメージは、次のようにして FD に書き込みます。
dd of=/dev/fd0 if=(イメージファイル)
こうして作成した FD から起動することで PXE 非対応の NIC を搭載した PC でもクライアントとすることがで
きます。
<3>
クライアントの起動
クライアントを起動すると GDM(Gnome Display Manager)のログイン画面が表示されます。ここでセッショ
ン(ウィンドウマネージャ)や言語、テーマの選択が可能ですが、通常はそのまま登録してあるユーザーでロ
グインすれば良いでしょう。
設定ファイル
lts の設定ファイルは、/opt/ltsp/i386/etc/lts.conf です。これを編集することで個別のクライアントに対応した
設定も可能となっています。設定ファイル内には、全体設定に当たる[Default]セクションと個別のクライアン
トに対する設定を行なうセクションがあります。
すべてのパラメータについて知りたいならば、LTSP のサイトの Document の「Chapter 9. lts.conf
entries」(http://www.ltsp.org/documentation/ltsp-4.1/ltsp-4.1-en.html#AEN1190)を読みましょう。
・主要パラメータ
SERVER = 192.168.0.254
XDM_SERVER、TELNET_SERVER などが明示されていない場合、このアドレスが適用さ
れる
XSERVER = auto
X server(ドライバ)の指定 自動認識出来ない場合だけ変更
X_MOUSE_PROTOCOL = "PS/2"
マウスの指定 これは通常の PS/2 マウスの指定
X_USBMOUSE_PROTOCOL = "IMPS/2"
USB マウスの指定
X_MOUSE_DEVICE = "/dev/psaux"
マウスの接続先の指定 これは通常の PS/2 マウスの指定
X_USBMOUSE_DEVICE = "/dev/input/mice"
USB マウスの接続先の指定
XkbModel = "pc101"
キーボードの指定 日本語キーボードなら jp106 にする
XkbLayout = "us"
キーボードレイアウトの指定 日本語キーボードなら jp にする
SCREEN_01 = startx
クライアント画面その 1 の指定 この場合、GUI
#SCREEN_02 = shell
クライアント画面その 2 の指定 有効にするとシェルが使える5 SCREEN_01 との切り替え
は[Ctrl]+[Alt]+[F2]
#SCREEN_03 = telnet
クライアント画面その 3 の指定 有効にすると指定のサーバに telnet で接続できる6
SCREEN_01 との切り替えは[Ctrl]+[Alt]+[F3]
# TELNET_HOST = 192.168.0.254
telnet を利用する場合の接続先
#SCREEN_04 = rdesktop
# RDP_SERVER = your.2k.server
# RDP_OPTIONS = -F -u fred -d ltsp
クライアント画面その 3 の指定 有効にするとリモートデスクトップに接続できる
SCREEN_01 との切り替えは[Ctrl]+[Alt]+[F4]
5
6
root ユーザーとして bash シェルが使えますが、サーバの/opt/ltsp/i386 ディレクトリを擬似的に / として、しかも、読み取り専用に
マウントしたシステムを使えるだけです。
ただし、接続先に telnet-server がインストールしてあり、かつ起動できるようになっている必要がある。
<4>
#RCFILE_01 = floppyd
RCFILE_02 = "usb"
追加する RC スクリプトの指定 この場合はクライアントの FD は利用できない クライアント
の USB は利用できる
SOUND = Y
サウンドサーバを利用可能にする ネットワーク経由でサウンドを利用できる
SOUND_DAEMON = "nasd"
# SOUND_DAEMON = "esd"
サウンドサーバの指定
・その他のパラメータ
X_MODE_0 = 800x600
画面解像度の指定 3 つまで指定可能 全く指定しないと 1024x768、800x600、640x480
の 3 つが利用可能
LOCAL_APPS = N
クライアント側でアプリケーションを実行する場合は「Y」とする その場合、NIS ドメインと
NIS サーバの指定が必要になる
#SWAPFILE_SIZE = 48m
クライアントが利用するスワップファイルの容量制限 デフォルトでは 64MB
#PRINTER_0_DEVICE = /dev/lp0
クライアント側の 1 代目のプリンタの指定
#PRINTER_0_TYPE = P
# P-Parallel, S-Serial
プリンタのタイプの指定
個別のクライアントに対する設定(全体設定と異なるもの)は、クライアントごとのセクションを作って記述しま
す。例えば、00:0D:56:F1:6C:A3 の MAC アドレスを持つ NIC を搭載したクライアントへの設定では
[00:0D:56:F1:6C:A3]
というセクションを作成し、[Default]セクションと異なるパラメータを記述します。個別のクライアントの指定は
MAC アドレスだけでなく、IP アドレスやコンピュータ名でも可能です。しかし、その場合はターミナルサーバ
の DHCP サーバ機能で特定の NIC を特定の IP アドレスやコンピュータ名と対応させる必要があります。
外部記憶装置の利用
クライアントを利用しているユーザーのデータは、通常、ターミナルサーバ内のホームディレクトリに記録し
ます。FD や USB メモリなどを利用したい場合、それらをターミナルサーバ側にマウントすれば利用できま
す。
しかし、いちいちサーバにそれらをセッ
トしなくても設定しだいでクライアント機
の FDD や USB ポートも利用する事は可
能です。ただし、その場合は MTools と
いうユーティリティを使ってファイルのコ
ピーや削除などを行うという形式になりま
す。直接 FD や USB メモリを保存先に指
定して書き込んだり、読み込んだりはで
きません。
MTools はデスクトップ上の「Floppy
access」というアイコンをダブルクリックす
ることで起動します。
<5>
トラブルシュート
・起動デバイスに NIC が無い
DELL の PC のように、NIC の設定を変えないと起動デバイスに NIC が表示されない場合もありま
す。
・起動デバイスを NIC にしたが、起動しない
BIOS やネットワークブートのためのツールの設定をいろいろ変えてみることで、うまくいくかもしれま
せん。
・何をどう設定してもネットワークブートできない
起動用 ROM イメージを使って FD から起動します。
・起動用 ROM イメージも無い
諦めて PXE に対応した NIC に交換しましょう。
・起動はしたが、GUI が表示されない(画面真っ暗)
ビデオチップの自動認識に失敗しているかもしれません。そのビデオチップに対応したドライバを
指定してみます。
・CUI でビデオの自動認識に失敗した旨のエラーメッセージがでる。
対応しているはずのドライバを指定しても、GUI が表示できない場合もあります。ビデオドライバー
に vesa や XF86_SVGA などの汎用的なものを指定してみると案外うまくいきます。
・telnet でターミナルサーバに繋がらない
標準状態でインストールした K12LTSP には、telnet-server がインストールされません。必要なら
telnet-server をインストールして、xinetd から起動されるように設定しましょう。
<6>