一般にはWindowsのリモートデスクトップが有名ですし、
中級者にはVNCも多用されていると思われます。
しかしUNIXの世界では昔からGUIを処理するマシンと
そのアプリケーションの内容を実行するマシンとは
必ずしも一致する必要はなく、大型コンピュータで処理しつつ、
小型端末に表示し操作することができるようになっていました。
X Windowですね。
まあ上級者にとってはGUIはむしろ邪魔である場合もあり、
専らsshでCUIというのが私のリモート操作のスタイルです。
ところがそうもいかないことも。
私はUbuntu 14.04ホスト上のlxcでUbuntu 14.04ゲストを使っており、
通常ゲストへはホストからsshでログインして利用しているのですが、
事情があってゲストのGUIアプリケーションを起動したくなりました。
GUIの表示先はホストです。
そういう場合はホストであらかじめ
設定ファイル"/etc/X11/xinit/xserverrc"の
exec /usr/bin/X -nolisten tcp "$@"の行を
exec /usr/bin/X "$@"に変更してリブートしておいてから、
ホスト側でリブートの度に
$ xhost + <ゲストのIPアドレス>を実行し、ゲスト側で
$ DISPLAY=<ホストのIPアドレス>:0.0 xeyesのように実行すれば有名な目玉アプリケーションがホストに表示される、
というのがまあ定番です。
ちなみにxeyesは
# apt-get install x11-appsでインストールできます。
ところが動いてくれない…
いろいろ調べていて、非常に簡単な方法があることを知りました。
ゲスト側であらかじめ
# apt-get install xauth # rebootを実行した上でホストからゲストにsshでログインするときに
$ ssh -X <ユーザ名>@<ホストのIPアドレス>のように'-X'オプションをつけ、ログイン後
$ xeyesのようにGUI表示先を特に気にせずGUIアプリケーションを実行すれば、
自動的にホストに表示されます。お手軽です。
このときゲスト側のDISPLAY環境変数はというと
$ printenv DISPLAY localhost:10.0となっています。きっとバックでうまくやってるんでしょうね。
0 件のコメント:
コメントを投稿