さて、前回VNCをセットアップしてす~いすい、の筈だったのだが、そうは問屋が卸さなかった。
ひとつには、コンソールからログインせずにVNCからだけログインした状態だと、Powerボタンで電源断をしてくれない。まあ、こちらは/etc/acpi/powerbtn.shとかをいじれば何とかなるのかもしれない。
もうひとつは、これもコンソールからログインせずにVNCからだけログインすると、“The Setting Deamon restarted too many times.”とか言うメッセージが現れて、なにやら不安定な状態になる。目の前でテーマがうねうねと切り替わるようで、気持ち悪いことこの上なし。反応も悪いし。Firefoxなどはすぐ落ちる。ついでに言えば、HDMIケーブルをはずしたコンソールには、なにやら解像度がどうとかいうダイアログが表示されたままでログインパネルも出てこない。
う~む、何が原因なのかねえ。Fedoraではこんな経験しなかったと思うけどなあ。ubuntuというディストリビューションはリモートからの利用をあまり考慮していないのか。ディストリビューションによって違うものなんですねえ。
などといっている間に、fit-pc2のwikiにubuntu 9.04のインストール手順が載っていた。一週間の間に開発が進んでいたのか! すごいねえ。上記の問題が解決するとも思えないが、とりあえず新しいOSをインストールしなおすことにする。9.04ではカーネルのブートオプションをいじらなくても良いようだ。
で、インストールしました。インストール自体は非常に順調に行きましたが…。
コンソールのXサーバーが、一度ログアウトした後、再立ち上げするところでモニターの同期が切れてしまいます。Xサーバー自体は動いてるようですが。使えねー。まあ私はコンソール使わないからいいんだけど。
VNCサーバーのオプションに -query localhost としたらgdmにつながりませんでした。-query 127.0.0.1 としたらつながりました。
VNCで“The Setting Deamon restarted too many times.”のエラーは出なくなりました。ただし、テーマは結局適用されない。なんだかMotifのような画面になっちゃいます。すごく悔しい。
VNCの画面をロックすることができません。あちゃー。なんでやねん。
なんだか問題が多いなあ。これ使うのかなあ。どうしよう。
さて、このマシンはサーバーとして物置代わりの部屋においておき、通常は家のほかの部屋からアクセスする。したがってネット越しでアクセスする方法が必要になる。CUIはsshを入れてしまえばお仕舞だが、21世紀にもなってそれでは物足りない。私が欲しいのは、完全なgdmセッションを実現すること。gdmログインで、ユーザーや言語を選べること。使っていない間はXサーバーのリソースを開放すること。セッションの途中で中断し、再びそこから再開できること。これらを、inetd経由でXvncを起動することで実現する。VNC:0 (port 5900)は、コンソールのXサーバーのリモート接続で使用するので、このセッションはVNC:1 (port 5901)として設定する。
パッケージマネージャーから、xinetdとvnc4serverをインストールする。ubuntuではこれらは初期状態で入っていないようだ。次に[System]→[Administration]→[Login Window]の[Remote]タブの[Style]で[Same as Local]を選ぶ。これでxdmcpが有効になる。が、gdmを再起動しなければいけないので、ここでマシンをいったん再起動する。次、sudoして /etc/xinetd.d/vnc を作成。中身は次の通り。なぜかXvncのパラメーターに -extension XFIXES をつけてあげないと、ログイン画面が出る前に落っこちてしまう。なぜだ~。
# default: off
# description: A Xvnc service. Provides a dynamic, but persistant workspace.
service vnc
{
type = UNLISTED
socket_type = stream
protocol = tcp
port = 5901
wait = yes
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -SecurityTypes None -geometry 800x600 -depth 24 -desktop "fit-pc2:1" -extension XFIXES
disable = no
}
保存したらxinetdを再起動する。これでVNCから ホスト名:1 で接続できる。結果はご覧の通り。

VNC経由のgdmログイン画面
運用の注意点としては、セッションを維持したまま中断するときは、必ず画面をロックすることですね。ま、自宅LANはNATルーターの内側なので、あまり神経質にならなくてもいいのだが。
これでfit-PC2をデスク上から片付けられる。あとはVNC経由でチビチビ作り上げていこう。
昨今のLinuxはインストール時にユーザーまで作成してくれる。便利だがそのようなユーザーはシステムが勝手に決めたuid/gidを持つことになる。ubuntuではuid/gid共に1000番だ。Mac OS Xもそうなんだよなー。こちらは500番だったりするが。
で、そのような環境でNFSマウントしたりすると、あじゃぱーな事になって、とても悲しい思いをする。
古臭いやつとお思いでしょうが、ここはひとつ、uidを変えさせてくんなまし。お控えなすって。
この作業ばかりはrootユーザーになってターミナルからfindするのが安全。ほかにいい方法があるのかも知れんが。ubuntuでrootを有効にするには、(1) [System]→[Administration]→[Login Window]の[Security]タブで[Allow local system administrator login]のチェックを入れる。(2) [System]→[Administration]→[User and Groups]でrootのパスワードを設定する。
rootでログインしたら、vipwとvi /etc/groupでuid/gidを変更。その後、find / -uid 古いuid -exec chwon ユーザー名 {} \; と find / -gid 古いgid -exec グループ名 {} \; を次々に実行して完成。
作業が終わったら、不必要なrootログインはできないように戻して置きましょう。