LTSPでネットワークブートするクライアントをカスタマイズしてみた

UbuntuでLTSPサーバを作ってみた(id:hykt:20081030)」の話の関連。

デフォルトでは、ネットワークブートするLTSPクライアントは、LTSPサーバにXDMCPで接続して利用する仕様で起動する。
これを、そのままLTSPクライアントにログインして使用するような仕様*1にカスタマイズできないか、調べてみた。

さて、前提の話。
LTSPクライアントのディスクイメージの元になるファイルは、/opt/ltsp/i386 配下にある。
これが、ディスクイメージのファイルとして、/opt/ltsp/images/i386.img にある。

カスタマイズする場合、/opt/ltsp/i386配下のファイルを変更し、ディスクイメージを更新するという流れで行う。
単にファイルを入れ替えるだけであればこれでよいが、
  • ユーザの追加やパスワードの変更
  • パッケージの追加・削除
  • (他にもあるかも…)
などを行う場合は、ルートディレクトリを移してprocをマウントする必要がある。
これも踏まえて、カスタマイズの手順をまとめておく。

準備

$ sudo chroot /opt/ltsp/i386
# mount -t proc proc /proc

仕上げ

# umount /proc
  • chroot環境から抜ける。
# exit
  • LTSPクライアントのディスクイメージを更新。
$ sudo ltsp-update-image
この、準備と仕上げを踏まえて、カスタマイズを行う。
カスタマイズの際にやってみたことを列挙しておく。

LTSPクライアント自身にログイン

  • LTSPクライアントは、デフォルトの状態ではLTSPサーバにXDMCPで接続するようにセットアップされている。
  • まずは、LTSPクライアント自身にログインできるユーザを作成してみる。
  • LTSPクライアントが起動したら、[Ctrl]+[Alt]+[F1]を押すとコンソール画面(tty1)に切り替える。
    • コンソール画面を正常に表示して使うには、カーネルオプションにvga=788を追加して起動しておく。*2
    • [Ctrl]+[Alt]+[F7]でX Windowの画面に切り替わる。
  • "ltsp login:"に対して…何を入力すればいいんだろう?
  • LTSPクライアントが起動した環境でログイン可能なアカウントがあるのかどうか、LTSPサーバの/opt/ltsp/i386/etc/passwdと/opt/ltsp/i386/etc/shadowを見て探してみる…けどないみたい。
  • 「ないんだったら、作ればいいのよ。」*3
  • 「準備」の実行。
  • adduserコマンドでユーザを追加。例えば、taroさんをusersグループに追加する場合。
# adduser --ingroup users taro
  • 「仕上げ」の実行。
  • これで、LTSPクライアントのディスクイメージに、ログイン可能なユーザができた。
  • LTSPクライアントを起動
  • [Ctrl]+[Alt]+[F1]を押すとコンソール画面(tty1)に切り替える。
  • 前述の手順で作成したユーザでログイン。

これで、LTSPクライアントにログインできるようになった。

X WindowでLTSPクライアント自身のログイン画面を表示

  • 次に、LTSPクライアント起動時のログイン画面を、LTSPクライアント自身のものにする。
  • sudo chroot /opt/ltsp/i386した環境で、起動時に実行されるスクリプトを眺めてみる。
  • X Windowのことなので、とりあえず、ランレベル5で実行されるスクリプトにヤマをはってみる。
  • ………。(/etc/rc5.dの中のファイルを眺めている)
  • /etc/rc5.d/S20ltsp-client-core を見ると、その中で/usr/lib/ltsp/ltsp_config というファイルが読み込まれている。
  • このファイルの"#Ensure a default screen if X is present"という行に続く部分を読むと、デフォルトでは /usr/sbin/ldm というディスプレイマネージャが起動されるように設定されていることが分かる。
  • 更に、/etc/X11/default-display-manager というファイルに、/usr/sbin/gdm と記述すれば、ディスプレイマネージャにgdmを利用できることが分かる。
  • gdmはインストールされているのかなと思ったが、/usr/sbin/gdmにファイルはない。
  • dpkg -l | grep gdm で調べると、インストールされていない。
  • …というわけで、gdmを使えるようにする。
  • 「準備」の実行。
  • apt-get install gdmを実行。
  • (gdmがインストールされると、/etc/X11/default-display-managerが作成される。)
  • 「仕上げ」の実行。
  • これで、LTSPクライアントのディスクイメージにgdmが追加され、X Window起動時に使用されるようになった。
  • LTSPクライアントを起動
  • (X Windowの起動時に"There was an error loading the theme Human"とエラーメッセージが表示されるが、そのままOK。)*4
  • gdmのログイン画面で、前述の手順で作成したユーザを使ってログイン。
  • X Windowの画面にシェルが起動する。
  • …シェルが起動する…。
  • …シェルが起動する…だけ。orz*5

ま、とりあえずX Windowの環境で、LTSPクライアント自身にログインできるようにはなった。
ということは、後はX Windowの環境をきちんと整えればいいってことだな。…大変そうだけど。

結局…

  • chrootした環境を希望するように整えていけば、WindowsのArdenceのような環境を作ることはできそうだ。
  • ただ、希望するようなLTSPクライアントを構築したとして、ディスクイメージのサイズはかなり大きくなりそう。
    • XDMCPでLTSPサーバに接続するだけというデフォルトのLTSPクライアントのディスクイメージのサイズは約150MB。
  • とりあえず「可能性としてはできそうだ」ということで、今はおしまい。
参考情報

*1:WindowsのArdenceのようなイメージ。

*2:id:hykt:20081030のLTSPクライアントの起動の「いいこと」を参照。

*3: (^^)

*4:このエラーが出ないようにするには、ubuntu-gdm-themeパッケージをインストールする。

*5:ちなみに、このシェルでexitと入力すれば、ログイン画面に戻る。