gdmから起動されるXサーバーをXvncにする in RHEL5
普段サーバーには近づかないが、グラフィカルに操作したい事もある。より便利にXを飛ばしたい。Xmingのフリー版とか古すぎてもう嫌。vncviewer.exeだけでかたがつくならこれに超したことはないわけよ。
ネットを探すとgdmを普通に起動(あるいは–no-consoleなどで表にはXが立ち上がらなく)して、(x)inetd経由でXvncを起動してlocalhostにxdmcpするというネタは嫌というほど出てくる。だが、localhostにxdmcpはちょっと嫌なのである。明らかにリモートログイン(RHEL5標準のグリーターだとローカルの場合は停止や再起動がメニューに出てくるが、リモートだと切断が出てくるとか、設定によってリモートはrootログインができないとか)になるし、×ボタンを押したら強制ログオフになる。
若干DebianやUbuntsでgdmが直接Xvncを起動するという話が出てくるが、それと同じ記述をRHEL5にしてみたが「Unrecognized Paramater: vt7」とか訳のわからんエラーが出てくる。ぐぐってみるとこれはgdmのLinux専用の(LinuxのVirtual Terminalうんぬんを制御する的な)設定が鍵になってそうな気がする。という訳で以下の設定でできた。VTAllocation=falseを[daemon]セクションに記述すると、gdm-binaryがvt7という引数を追加しなくなるようだ。さらに、[servers]の0=VNCでStandardサーバーを上書きし、[server-VNC]でXvncをgdmが使うXサーバーになるように設定している。本来はパスワードファイルを用意してVNCする前にもう一段認証の壁を作っておくべきだと思うが、遊び環境だしVNC認証→gdm認証が煩わしかったのでVNC認証を行わないようにしてみた。
/etc/gdm/custom.conf(抜粋)
[daemon] VTAllocation=false [servers] 0=VNC [server-VNC] name=Xvnc server command=/etc/gdm/Xvnc -geometry 1024x768 -depth 16 -securitytypes=none chooser=false handled=true flexible=true priority=0
これで、サーバーのコンソールはGUIじゃないログインのまま、このサーバーにvncviewer.exeでアクセスするとGDMのグリーターが表れるようになったぜ。
xinetd経由と違い、ログインした状態で×ボタンを押してもログアウトはされない。rootでログインした状態だと誰でもVNCでつなげば操作できるので危険ではある。
ここで直接-desktop=`/bin/hostname`としたらホスト名がVNCのタイトルバーに出てくるかなぁと思ったけどだめだった。なので/etc/gdm/Xvncというシェルスクリプトを用意。
#!/bin/sh exec /usr/bin/Xvnc -desktop=`hostname` $@
これでめでたく自動でホスト名がVNC窓のタイトルに現れるようになったそうな。
ついでに、vncviewer.exe(RealVNC 4.1.2 日本語パッチ版)+Redhat Enterprise Linux 5のXvncの組み合わせだと、半角/全角を押した時にIME(普通はSCIM+Anthy)が立ち上がらない。これに対処するには、出来ればインストール直後に/etc/scim/configの/Hotkeys/FrontEnd/TriggerをZenkaku,Hankakuという記述に変更しておく。既にgnome-sessionでログインしていた場合はログアウトするなどSCIMを停止した状態で~/.scim/configを同様に修正する。