Cygwin/X + Solaris という組み合わせを使って PC 上に Solaris のログイン画面を表示させて使うことがよくあるのですが、複数のネットワークインターフェイスを持つ Solaris サーバで X がうまく使えないことがありました。 そのときの解決方法の備忘録です。
具体的には、以下のような症状がありました。
Cygwin/X に Solaris のログイン画面を表示しようとすると、黒い X の画面が表示され、 ログイン画面起動待ちのカーソルが表示されるところまで行くがその先のログイン画面が表示されない。
ps コマンドで確認してみると、dtlogin から /usr/dt/config/Xsetup が呼ばれますが、この Xsetup の以下の行で処理が止まってしまって dtgreet が起動されるところまで行かないようです。
/usr/openwin/bin/xset fp+ "tcp/${FS_HOSTNAME}:7100"
実際に ps コマンドで確認すると ${FS_HOSTNAME} の部分は IP アドレスになっているのですが、このアドレスをよく見ると Cygwin/X を起動している PC から到達不能なアドレスになっています。 X サーバは PC 上で動作するのでこれはまずいですね。 Solaris サーバが複数のインターフェイスを持っているためこのようなことが起こってしまったのです。
/etc/hosts を修正して Xsetup 中で実行される、
/usr/bin/getent ipnodes "${Hostname}" | \ /usr/bin/head -1
あたりで返される IP アドレスが Cygwin/X を起動している PC から到達可能なアドレスとなるようにしました。 これで無事問題解決しました。