Last modified Sun Jun 8 07:27:26 2008 on firestorm
ちみは、screen使っとるけ? なに つかっとらんとな。じゃ、びぇ。
あ、使っとるとな。じゃscreenはまともなUnix Userにとってなくては ならんツールってのは分かっとるわけじゃな。たとえば、screenを 使うことに対して
その手の文句を言われても、「いやいや、遅かろうが、何だろうが、 screenのよさはいつでもどこでも同じ作業画面が使えて、不慮のコネクション断 にも平気のへっちゃらで作業できる、という本気で仕事するしとにしか わからん通なところがいいんじゃわい。」と、平然と言ってのける 経験を持っていると思ってよいわけじゃな。
なら、言おう。
VNCつかいたまへ。TightVNCならなおよろし。
とくに、ローカルでX+screenと言う組み合わせで、使っていて、 screenの中だけで作業するに飽き足らず、XクライアントのEmacsや、 Mozilla/firefoxなんかを使っているのであればなおさら、TightVNC使いたまへ。
screenのすごさを知っている人のみに分かってもらえるだろうが、 VNCはscreenのX環境版と考えてよろしい。おそらく、Xとscreenを両方知ってい る人であればVNCなんかは、1999か2000年くらいにちらっと見ているはずで、 リモートネットワークの先で動いているWindows2000なんかの画面がモッサリちんたら 動いているのを見て、「WindowsはGUIしかないからリモートログイン環境が遅くて カワイソウねー♪」とある意味「使えん」と烙印を押して終わっているんじゃな かろうか。実際、登場した当時のVNCはそうだった。
でも、TightVNCは違う。
確かに遅いけど、ADSLくらいの低速回線で満足できる程度にちゃんと使える のだ。
screenで生きている人にとっては、メイルのやり取りとかは emacs -nw で起動した中でMewとかWanderlustを使うのが常識だろう。でも、 メイル以外に本気で編集作業をしたいとき、本気で画像処理なんかをしたいとき、 は、やっぱりXクライアントのEmacsで複数のフレームとカラフルなfont-lockを 使いたいし、Tgif、Dia、GIMPなんかを使いたいことだろう。そんなとき、
あ、自宅でいじってたファイル、保存しないままオフィスに来ちゃった…
なんてなことは、きっとあるはずだ。いやむしろ、ないと言う人は、 Network Transparency のないシステムによほど慣らされてしまった可哀相な人と 言うべきなのである。Xはネットワーク透過性のあるシステム、どこにいたって、 同じように使える、それが当たり前のウィンドウシステムなのだ。 話を戻すと、まあ実際本当は保存せずに進んだ部分は なくなってもたいして時間的ロスはないにしても、むっちゃ気になる。 「ああ、ちゃんと保存してから家を出ればよかった…」と。
さあ、そんな経験が複数回あるちみは、もう、ぜひ、TightVNCを 使いたまへ。screenと同じように、自宅で使うときも常にVNCの中で 生活したまへ。繰り返すがこれはまさに、screenのX環境版と言っていい。
vncserver :1 -deferglyphs 16
とかタイプして起動した環境を
vncviewer -full localhost:1
として「接続」してX環境を手元に開けば、screenと同様、 時空を超えて接続できるX環境となるのだ。そこでいろいろ起動したXの デスクトップは、たとえオフィスに行っても
vncviewer 自宅のホスト:1
とすれば、手元に持って来ることができる。ちょうど ssh して screen -r するときと同じように。もう、すごさは分かった?
圧縮プロトコルのないVNCは正直、ADSLくらいのリンクじゃ使えないくらいに 遅い。まさに「もっさり」だが、TightVNCは違う。1024x768くらいであれば、 しっかり圧縮が効いてADSLリンク程度でも「一昔前のマシンを触ってます」程度 の速度低下で、すくなくとも「自宅でセーブし忘れたファイルをセーブし直す」 とか「自宅環境じゃないと起動できないXアプリケーションを操作する」という 用途ならたいして不満なく使える程度に使える。
で、セットアップ、だが、TightVNCは各種OSの標準アプリケーションとして
用意されているのでインストール自体はちっとも難しくない、だろう。
手コンパイルするにしても、http://www.tightvnc.com/
から
ソースをもらって来て展開して、
make World
して、できたバイナリをPATHの通ったディレクトリにインストールするだけ。
まず、自宅の、あるいはオフィスの、どちらか自分で仕事上メインと考える方の
Xを使う端末で、いつものようにXを起動する。そして、そのデスクトップで使わ
ず、まず、vncserver :1 のように起動しよう。おそらく一発目に必要なファイ
ルを~/.vnc/
に作ってくれるので、すぐにvncserver -kill
:1
しちゃおう。そして、作ってくれた~/.vnc/xstartup
を
すぐ編集して、自分の~/.xinitrc
と似たような構成にしちゃおう。
「kterm
」とかだけ書けば実際十分なのだが、
わしの場合はこんな風。
#!/bin/sh case "$VNCDESKTOP" in gnome) gnome-session ;; kde) PATH=$PATH:/opt/pkg/bin:/opt/pkg/sbin startkde ;; emacs*|kterm) kterm ;; *) ;; esac
$VNCDESKTOP
変数はvncserver起動時の -name オプションに
与えられる文字列が入るので、これに応じて処理を切り替えている。とはいえ
普段よく使うのはktermだけなので、vncserver :1 -name kterm のようにして
ktermだけを起動しておけばまあなんとかなる。そしていつもは、
vncviewer localhost:1
として接続し、その後必要なアプリケーションを手動で起動している。 手動で面倒臭くないかって? ないない、だって一度起動したVNC内のX環境は screenみたいに2〜3ヶ月あるいはそれ以上使うんだもの。ローカルのXが落ちても ずっと生き続けてるもの。
さて、そうやって起動したVNC環境の中で必要なアプリケーションを 起動したら、そのままファンクションキー[F8]を押してVNCメニュー を出してから、「Full Screen」を選んで全画面化してずーっっと使う。 そう、ローカルマシンでもVNCクライアントで接続して使うのだ。確かに Xの描画速度は落ちるが、現在のちょっ速マシンならたいしたことない。それより、 あとで「いつでもどこでも」使えることの方が大事。screen使うと画面出力遅く なっても何時でもどこでも繋げる安心感の方が大事、と 考えられる人なら納得できるはずだ。 実際mplayerとか高速描画が要求されるものでも、多少のコマ落ちが気にならな いなら mplayer -framedrop でわざとコマ落ちさせて実行すれば滞らないし、 それも気になるときはまたファンクションキーの[F8]で素のX環境に 戻ってmplayer起動すればよいってだけである。すくなくともEmacsとかブラウザ を起動している分には速度低下は気付かない。
で、オフィスに行きました。セーブし忘れのファイルがありました。 起動しましょう vncviewer を。もう、自宅のXで何を忘れて来ても、安心。
vncviewerとvncserverの接続は、固定秘密鍵の認証だけでたいしたセキュリティ はない感じなので、そういうときは、sshでポートフォワードしよう。 というか、それを見越した設計になってる点がえらい。そういうオプションが いくつかある。まそれはいいとして、オフィスに行ってから 自宅サーバのvncserverに「安全に」繋ぎたいなら
ssh -CY -L 1111:localhost:5901 自宅サーバ
として自宅サーバにログインしたあと、ローカルの職場端末から
vncviewer -encoding tight -noraise -x11 localhost::1111
しましょう。もちろん1111は1024以上なら何番でもよい。 ポートフォワードしているときのポイントは -encoding tight オプションで、これがないとローカル接続と勘違いされて圧縮なしの大富豪 パケット通信がされてしまう。-encoding tight と明示的に指定すれば、 みかけ上 localhost への通信でもしっかり適度な圧縮してくれる。 このことに気付いていないらしきWebページが多数あって、「TightVNCもすげー 遅い」と書いてあるページが一杯あるのはどうしたもんか。確かにこの オプションつけないとSSHポートフォワードの組み合わせがすっっっっげー 遅いけどね。TightVNCのせいじゃないじょ。ちゃんとマニュアル見なさいって。
はい、見ます。ポートフォワードを一気にやってくれる -via
オプションを使った方がええね。
vncviewer -via remote remote:1
などとすると、裏で勝手にssh呼んでローカルフォワードしてくれる。 ひー偉すぎ。
何事もそうだが、いいとこばっかりではない。
fvwm2を使っているとvncviewerをフルスクリーンモードにしたときに
フォーカスが生のXに残っちゃうことがある
→ 何度かvncviewerを起動し直せばそのうちうまくいく。
→ ダメな場合は生のXのウィンドウマネージャをtwmとかに変えるしかない。
Xvncサーバがfreetypeフォントを使えない
→ Xフォントサーバ(xfs)を起動して xset fp+ tcp/localhost:7100
すればよい。
vncserver環境内でフォントを使いまくってるとたまにメモリ不足で
起動できないアプリケーションが出る。
→ vncserver 起動時に -deferglyphs 16
を足すなどすれば問題ないようだ。
それでもだめなら諦めてvncserver環境を再起動
という感じ。そういう不都合を超えていいことがあるから使ってる。
がっこや専門がっこでこんぴうた教えてるしとなら、分かるかな。 きょーびはだいたい、
ってな感じだろう。で、見本を見せるために教卓マシンをいじくってると 不熱心が受講生が講義と関係ない外部のポータルサイトとか見てるのが気になる。
そーんなときも、TightVNCだいえーい。ログインしてvncserverを起動して その中に講義に必要な環境を作っておく。そして教卓マシンにログインして vncviewerでvncserverに繋いでおいてから、学生の席の後ろの方のマシンに ログインしてそこでもvncviewerを起動して、あーら不思議、任意の学生用 端末から教卓マシンのプロジェクタに映ってるデスクトップがいじれちゃう。 自分がなるべく後ろの方に座れば、講義中に遊びWebページ見てる学生もおとなしく 内職をやめるのココロ。今年度から実践してるけど、これはなかなかイケますよ、 せんせー。